buynow.html0000644002347300047320000000461011656660653012634 0ustar vonfabpsacln Mouse Eye Tracking by PicNet Software Development Services direct-access.php0000644002347300047320000000027211656660653013645 0ustar vonfabpsacln

Accessing this file directly may skew the results of the test. Please access the suite here.

favicon.ico0000644002347300047320000000257611656660653012555 0ustar vonfabpsaclnh( D8L!Q#Q0P1Q{v*k>a*l*l-r.s-r?f1r2r1s?kDjHlJnKpGsFtLqMqMrPsPtQtQsPtQtQuVxY{Y|\~^_``@e@@FF¥oÔwƙVȨVȩWɩHɯYʪ]ʩKʲL˲I˴J̳RͲ}ΣѨѩѩҫҫӮԮԯԯկհղ\[WZֳִ׳׵kimnnxyvyu{z{}~~~~|cfeggdzjihkkmostrT@?=YWLx^\]]ZUSR.5<9QJGv' 2B;VMIw,$$ 1A:VMHw,$$3C>VMHw-%## !7XOPPIu+$"$$$6KFEEDp*$$$$$ [ynnql*$$$$$$b)_N0/&'''''(`48aa{google1a8344a52838d61f.html0000644002347300047320000000006511656660653014566 0ustar vonfabpsaclngoogle-site-verification: google1a8344a52838d61f.htmlgoogle6892c907b1c4070a.html0000644002347300047320000000006511656660654014564 0ustar vonfabpsaclngoogle-site-verification: google6892c907b1c4070a.htmlindex.php0000644002347300047320000000061511656660654012245 0ustar vonfabpsaclnlicense.txt0000644002347300047320000003572611656660654012623 0ustar vonfabpsacln GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS WRITTEN OFFER The source code for any program binaries or compressed scripts that are included with WordPress can be freely obtained at the following URL: http://wordpress.org/download/source/ login.html0000644002347300047320000000363611656660654012431 0ustar vonfabpsacln Mouse Eye Tracking by PicNet Software Development Services mindex.php0000644002347300047320000000221711656660654012422 0ustar vonfabpsacln Mint: Server Compatibility Suite

Mint Server Compatibility Suite

Your server does not appear to understand PHP. I'm sorry but Mint will not work with this server.

The Mint Server Compatibility Suite helps you determine whether or not your server has the necessary technology and your database user has the necessary permissions required to install and use Mint.

(Please note that passing the Mint Server Compatibility Suite does not guarantee that Mint will run on your server. It simply confirms that your server offers the base features Mint requires.)

phpinfo.php0000644002347300047320000000002411656660655012574 0ustar vonfabpsacln readme.html0000644002347300047320000002176211656660656012560 0ustar vonfabpsacln WordPress › ReadMe

WordPress
Version 3.1.3

Semantic Personal Publishing Platform

First Things First

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.

— Matt Mullenweg

Installation: Famous 5-minute install

  1. Unzip the package in an empty directory and upload everything.
  2. Open wp-admin/install.php in your browser. It will take you through the process to set up a wp-config.php file with your database connection details.
    1. If for some reason this doesn't work, don't worry. It doesn't work on all web hosts. Open up wp-config-sample.php with a text editor like WordPad or similar and fill in your database connection details.
    2. Save the file as wp-config.php and upload it.
    3. Open wp-admin/install.php in your browser.
  3. Once the configuration file is set up, the installer will set up the tables needed for your blog. If there is an error, double check your wp-config.php file, and try again. If it fails again, please go to the support forums with as much data as you can gather.
  4. If you did not enter a password, note the password given to you. If you did not provide a username, it will be admin.
  5. The installer should then send you to the login page. Sign in with the username and password you chose during the installation. If a password was generated for you, you can then click on 'Profile' to change the password.

Updating

Using the Automatic Updater

If you are updating from version 2.7 or higher, you can use the automatic updater:

  1. Open the wp-admin/update-core.php in your browser and follow the instructions.
  2. You wanted more, perhaps? That's it!

Updating Manually

  1. Before you update anything, make sure you have backup copies of any files you may have modified such as index.php.
  2. Delete your old WordPress files, saving ones you've modified.
  3. Upload the new files.
  4. Point your browser to /wp-admin/upgrade.php.

Theme Template Changes

If you have customized your theme templates, you may have to make some changes across major versions.

Migrating from other systems

WordPress can import from a number of systems. First you need to get WordPress installed and working as described above, before using our import tools.

System Requirements

System Recommendations

Online Resources

If you have any questions that aren't addressed in this document, please take advantage of WordPress' numerous online resources:

The WordPress Codex
The Codex is the encyclopedia of all things WordPress. It is the most comprehensive source of information for WordPress available.
The WordPress Blog
This is where you'll find the latest updates and news related to WordPress. Recent WordPress news appears in your administrative dashboard by default.
WordPress Planet
The WordPress Planet is a news aggregator that brings together posts from WordPress blogs around the web.
WordPress Support Forums
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.
WordPress IRC Channel
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. (irc.freenode.net #wordpress)

XML-RPC and Atom Interface

You can post to your WordPress blog with tools like Windows Live Writer, Ecto, w.bloggar, Radio Userland (which means you can use Radio's email-to-blog feature), NewzCrawler, and other tools that support the blogging APIs! :) You can read more about XML-RPC support on the Codex.

Post via Email

You can post from an email client! To set this up go to your "Writing" options screen and fill in the connection details for your secret POP3 account. Then you need to set up wp-mail.php 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 wp-mail.php URL.

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 discrete. The script will delete emails that are successfully posted.

User Roles

We introduced a very flexible roles system in version 2.0. You can read more about Roles and Capabilities on the Codex.

Final Notes

Share the Love

WordPress has no multi-million dollar marketing campaign or celebrity sponsors, but we do have something even better—you. If you enjoy WordPress please consider telling a friend, setting it up for someone less knowledgable than yourself, or writing the author of a media article that overlooks us.

WordPress is the official continuation of b2/cafélog, which came from Michel V. The work has been continued by the WordPress developers. If you would like to support WordPress, please consider donating.

License

WordPress is free software, and is released under the terms of the GPL version 2 or (at your option) any later version. See license.txt.

READ ME.txt0000644002347300047320000000166711656660655012174 0ustar vonfabpsacln================================================================================ GET YOUR MINT ON The Mint Server Compatibility Suite -------------------------------------------------------------------------------- Unzip and upload the /mint-scs/ folder to the root directory of your website and then hit it with a browser, eg. http://yourdomain.com/mint-scs/ You should have your database server, database username, database password, and database name handy for the third step of this suite. Please contact your host if you do not have this information. If index.php is not the default document for directory requests on your server please contact your host. Mint will not work correctly otherwise. ================================================================================ Copyright 2004-2005 Shaun Inman. This package cannot be redistributed without permission from http://www.shauninman.com/ More info at: http://www.haveamint.com/ robots.txt0000644002347300047320000000030311656660655012471 0ustar vonfabpsaclnUser-agent: * Disallow: /wp-admin Disallow: /wp-includes Disallow: /wp-content/plugins Disallow: /wp-content/cache Disallow: /wp-content/themes Sitemap: http://www.calliflower.com/sitemap.xml.gzsamsung_trynow.html0000644002347300047320000000364411656660656014421 0ustar vonfabpsacln Mouse Eye Tracking by PicNet Software Development Services sitemap.xml0000644002347300047320000023365511656660657012630 0ustar vonfabpsacln http://www.calliflower.com/ 2011-03-09T17:25:40+00:00 daily 1.0 http://www.calliflower.com/getting-to-know-calliflower/international-dial-in-numbers/ 2011-10-06T17:28:13+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_create/how-do-i-pay-for-a-call-if-i-have-exceeded-my-5-calls-per-month-limiti-still-want-to-make-this-call-thank-you/ 2011-09-20T00:13:19+00:00 weekly 0.6 http://www.calliflower.com/faq/my-powerpoint-presentation-was-reformatted-when-i-attempted-to-share-it-is-there-a-way-to-avoid-this/ 2011-09-20T00:10:58+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_during/we-are-having-a-call-with-30-people-will-they-automatically-be-muted-when-they-first-come-on-the-call-or-can-they-come-on-speaking-and-we-then-mute-them-individually/ 2011-09-12T13:16:17+00:00 weekly 0.6 http://www.calliflower.com/flat-rate-pricing/ 2011-09-06T20:02:14+00:00 weekly 0.6 http://www.calliflower.com/our-team/ 2011-08-29T20:59:49+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_during/how-do-i-enter-my-pin-on-skype/ 2011-08-24T17:25:00+00:00 weekly 0.6 http://www.calliflower.com/contact/ 2011-08-15T18:23:31+00:00 weekly 0.6 http://www.calliflower.com/getting-to-know-calliflower/ 2011-06-04T09:35:56+00:00 weekly 0.6 http://www.calliflower.com/getting-to-know-calliflower/multiple-organizers/ 2011-06-04T09:33:43+00:00 weekly 0.6 http://www.calliflower.com/2011/05/20/calliflower-invitations-and-reminders-updated/ 2011-05-20T11:47:24+00:00 daily 0.6 http://www.calliflower.com/faq/faq_after/how-do-i-share-a-call-recording/ 2011-05-16T16:21:32+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_create/how-can-i-invite-of-group-to-a-call/ 2011-05-16T16:09:35+00:00 weekly 0.6 http://www.calliflower.com/2011/02/07/calliflower-delivers-toll-free-800-number-service/ 2011-05-10T02:57:01+00:00 daily 0.6 http://www.calliflower.com/2011/04/11/april-is-sarcoidosis-awareness-month/ 2011-04-11T19:48:45+00:00 daily 0.6 http://www.calliflower.com/faq/faq_during/how-soon-before-the-call-is-the-pin-activated-can-people-test-it-30-mins-before-to-ensure-that-there-are-no-technical-problems/ 2011-04-09T09:52:49+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_trouble/some-of-the-invited-people-have-not-yet-responded-how-do-i-re-send-the-invitation-in-case-they-lost-the-first-one/ 2011-03-31T14:39:28+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_create/what-happens-if-i-set-the-call-duration-for-2-hours-and-end-up-needing-more-time/ 2011-03-31T14:30:35+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_setup/how-can-i-change-my-log-in-address/ 2011-03-31T14:29:08+00:00 weekly 0.6 http://www.calliflower.com/2011/03/30/a-customer-just-showed-me-something-really-cool-that-you-can-do-with-calliflower/ 2011-03-30T19:12:02+00:00 daily 0.6 http://www.calliflower.com/iss/ 2011-03-27T12:07:40+00:00 weekly 0.6 http://www.calliflower.com/order-today/ 2011-03-24T19:51:58+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_during/how-do-i-upload-a-document-to-my-calliflower-call/ 2011-03-11T23:01:59+00:00 weekly 0.6 http://www.calliflower.com/faq/fequently-asked-questions-document-sharing/ 2011-03-11T22:58:39+00:00 weekly 0.6 http://www.calliflower.com/faq/why-doesnt-my-file-upload/ 2011-03-11T22:55:20+00:00 weekly 0.6 http://www.calliflower.com/faq/ 2011-03-11T22:15:16+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_create/on-your-features-page-it-talks-about-a-no-web-interface-method-of-calling-you-can-move-to-calliflower-and-keep-your-old-experience-%e2%80%93-the-one-with-pin-codes-and-no-web-interface-how-d/ 2011-03-10T18:45:36+00:00 weekly 0.6 http://www.calliflower.com/2011/03/09/earn-a-free-calliflower-subscription-sure-tons-of-new-features-in-our-latest-update-too/ 2011-03-09T22:36:41+00:00 daily 0.6 http://www.calliflower.com/main/ 2011-03-09T14:17:54+00:00 weekly 0.6 http://www.calliflower.com/getting-to-know-calliflower/share-documents/ 2011-03-09T03:21:50+00:00 weekly 0.6 http://www.calliflower.com/getting-to-know-calliflower/organizing-a-call-is-as-easy-as-123/ 2011-03-09T03:21:01+00:00 weekly 0.6 http://www.calliflower.com/getting-to-know-calliflower/delegate-access/ 2011-03-09T03:19:48+00:00 weekly 0.6 http://www.calliflower.com/teleconference-service-for-the-uk/ 2011-03-09T03:16:29+00:00 weekly 0.6 http://www.calliflower.com/teleconference-service-for-denmark/ 2011-03-09T03:16:12+00:00 weekly 0.6 http://www.calliflower.com/teleconference-service-for-australia/ 2011-03-09T03:15:43+00:00 weekly 0.6 http://www.calliflower.com/samsungreseller/ 2011-03-09T03:15:19+00:00 weekly 0.6 http://www.calliflower.com/make-money-with-the-calliflower-affiliate-program/ 2011-03-09T03:14:34+00:00 weekly 0.6 http://www.calliflower.com/inum-conference-call-service/ 2011-03-09T03:13:48+00:00 weekly 0.6 http://www.calliflower.com/how-to-make-international-conference-calls/ 2011-03-09T03:13:24+00:00 weekly 0.6 http://www.calliflower.com/getting-started-with-calliflower/ 2011-03-09T03:13:11+00:00 weekly 0.6 http://www.calliflower.com/how-to-designate-a-delegate/ 2011-03-09T03:12:54+00:00 weekly 0.6 http://www.calliflower.com/business_conference_calls/ 2011-03-09T03:12:18+00:00 weekly 0.6 http://www.calliflower.com/samsung/ 2011-03-09T03:07:44+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_setup/i-need-to-be-able-to-have-someone-else-organize-a-call-on-my-behalf-how-do-i-add-a-delegate-organizer-to-my-calliflower-premium-account/ 2011-03-09T03:04:44+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_trouble/today-i-had-two-calls-one-i-organised-the-other-i-did-not-and-wasnt-invited-to-through-the-calliflower-system-they-were-close-together-the-first-i-was-auto-connected-to-by-the-really-useful-s/ 2011-03-09T03:03:59+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_trouble/i-just-started-participating-in-a-series-of-calliflower-calls-on-the-first-day-your-system-recognized-my-phone-number-in-the-two-days-since-then-it-does-not-i-have-to-key-in-my-pin-my-account-s/ 2011-03-09T03:01:51+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_trouble/ello-can-you-tell-me-how-to-unsubscribe-to-this-page-thanks-for-your-reponse/ 2011-03-09T03:00:24+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_pricing/how-do-i-cancel/ 2011-03-09T02:59:11+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_after/when-i-send-a-call-recording-to-someone-is-there-a-way-to-see-if-the-recipient-actually-opened-the-file-they-recieved/ 2011-03-09T02:58:41+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_after/how-can-participants-download-call-recordings/ 2011-03-09T02:57:24+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_after/how-can-i-review-the-actual-call-duration-after-the-call/ 2011-03-09T02:56:17+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_after/how-do-i-find-the-email-addresses-of-all-that-joined-the-call-how-do-i-add-their-emails-to-my-address-bookhow-do-i-create-groups-within-my-address-book/ 2011-03-09T02:55:41+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_during/how-can-the-moderator-restart-a-recording-in-event-that-they-get-disconnected/ 2011-03-09T02:52:51+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_during/i-would-like-to-record-a-meeting-and-then-set-up-a-call-and-playback-that-recording-is-this-possible/ 2011-03-09T02:50:47+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_setup/do-i-need-a-pc-to-be-the-call-host/ 2011-03-09T02:50:04+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_about/can-you-please-give-me-instructions-on-how-to-call-someone-in-russia-from-canada-for-freethanksbrishen/ 2011-03-09T02:48:58+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_about/can-calliflower-provide-video-conferencing/ 2011-03-09T02:48:06+00:00 weekly 0.6 http://www.calliflower.com/conference-call-service-for-switzerland/ 2011-03-09T02:46:08+00:00 weekly 0.6 http://www.calliflower.com/conference-call-service-for-united-states/ 2011-03-09T02:45:19+00:00 weekly 0.6 http://www.calliflower.com/conference-call-service-for-the-netherlands/ 2011-03-09T02:45:05+00:00 weekly 0.6 http://www.calliflower.com/conference-call-service-for-the-czech-republic/ 2011-03-09T02:44:54+00:00 weekly 0.6 http://www.calliflower.com/conference-call-service-for-sweden/ 2011-03-09T02:44:40+00:00 weekly 0.6 http://www.calliflower.com/conference-call-service-for-spain/ 2011-03-09T02:44:27+00:00 weekly 0.6 http://www.calliflower.com/conference-call-service-for-singapore/ 2011-03-09T02:44:14+00:00 weekly 0.6 http://www.calliflower.com/conference-call-service-for-portugal/ 2011-03-09T02:44:02+00:00 weekly 0.6 http://www.calliflower.com/conference-call-service-for-poland/ 2011-03-09T02:43:48+00:00 weekly 0.6 http://www.calliflower.com/conference-call-service-for-norway/ 2011-03-09T02:43:34+00:00 weekly 0.6 http://www.calliflower.com/conference-call-service-for-new-zealand/ 2011-03-09T02:43:20+00:00 weekly 0.6 http://www.calliflower.com/conference-call-service-for-mexico/ 2011-03-09T02:43:06+00:00 weekly 0.6 http://www.calliflower.com/conference-call-service-for-japan/ 2011-03-09T02:42:51+00:00 weekly 0.6 http://www.calliflower.com/conference-call-service-for-italy/ 2011-03-09T02:42:30+00:00 weekly 0.6 http://www.calliflower.com/conference-call-service-for-ireland/ 2011-03-09T02:40:50+00:00 weekly 0.6 http://www.calliflower.com/conference-call-service-for-hungary/ 2011-03-09T02:40:32+00:00 weekly 0.6 http://www.calliflower.com/conference-call-service-for-hong-kong/ 2011-03-09T02:40:15+00:00 weekly 0.6 http://www.calliflower.com/conference-call-service-for-france/ 2011-03-09T02:40:03+00:00 weekly 0.6 http://www.calliflower.com/conference-call-service-for-finland/ 2011-03-09T02:39:42+00:00 weekly 0.6 http://www.calliflower.com/conference-call-service-for-chile/ 2011-03-09T02:35:34+00:00 weekly 0.6 http://www.calliflower.com/conference-call-service-for-bulgaria/ 2011-03-09T02:35:19+00:00 weekly 0.6 http://www.calliflower.com/conference-call-service-for-israel/ 2011-03-09T02:34:56+00:00 weekly 0.6 http://www.calliflower.com/conference-call-service-for-brazil/ 2011-03-09T02:33:32+00:00 weekly 0.6 http://www.calliflower.com/conference-call-service-for-belgium/ 2011-03-09T02:32:25+00:00 weekly 0.6 http://www.calliflower.com/conference-call-service-for-bahrain/ 2011-03-09T02:31:43+00:00 weekly 0.6 http://www.calliflower.com/conference-call-service-for-austria/ 2011-03-09T02:31:11+00:00 weekly 0.6 http://www.calliflower.com/conference-call-service-for-argentina/ 2011-03-09T02:30:36+00:00 weekly 0.6 http://www.calliflower.com/best-conference-call-service-for-south-africa/ 2011-03-09T02:29:54+00:00 weekly 0.6 http://www.calliflower.com/best-conference-call-service-for-canada/ 2011-03-09T02:28:57+00:00 weekly 0.6 http://www.calliflower.com/twitter-redirect/ 2011-03-04T17:20:10+00:00 weekly 0.6 http://www.calliflower.com/saunders-bio-redirect/ 2011-03-04T15:42:23+00:00 weekly 0.6 http://www.calliflower.com/facebook-app-redirect/ 2011-03-04T14:56:04+00:00 weekly 0.6 http://www.calliflower.com/calliflower-iphone-app-redirect/ 2011-03-04T14:54:47+00:00 weekly 0.6 http://www.calliflower.com/307-2/ 2011-01-04T20:41:10+00:00 weekly 0.6 http://www.calliflower.com/2010/12/22/calliflower-holiday-support-notice/ 2010-12-22T18:20:43+00:00 daily 0.6 http://www.calliflower.com/calliflower/ 2010-11-24T22:02:51+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_about/how-many-simultaneous-callers-does-calliflower-support-can-calliflower-support-large-conference-calls/ 2010-11-01T18:09:41+00:00 weekly 0.6 http://www.calliflower.com/new-presence/ 2010-08-31T17:17:20+00:00 weekly 0.6 http://www.calliflower.com/2010/08/18/calliflower-network-expands-to-portugal/ 2010-08-18T15:30:01+00:00 daily 0.6 http://www.calliflower.com/2010/08/17/how-to-calliflower/ 2010-08-17T21:18:57+00:00 daily 0.6 http://www.calliflower.com/how-to-make-a-mobile-conference-call/ 2010-08-17T20:57:14+00:00 weekly 0.6 http://www.calliflower.com/how-to-create-a-conference-call/ 2010-08-17T20:56:49+00:00 weekly 0.6 http://www.calliflower.com/how-to-share-a-document-during-a-conference-call/ 2010-08-17T20:56:29+00:00 weekly 0.6 http://www.calliflower.com/how-to-setup-your-conference-call-profile/ 2010-08-17T20:56:12+00:00 weekly 0.6 http://www.calliflower.com/how-to-set-conference-call-notification-settings/ 2010-08-17T20:55:53+00:00 weekly 0.6 http://www.calliflower.com/how-to-send-conference-call-invitations/ 2010-08-17T20:55:39+00:00 weekly 0.6 http://www.calliflower.com/how-to-record-a-conference-call/ 2010-08-17T20:55:21+00:00 weekly 0.6 http://www.calliflower.com/how-to-make-a-secure-conference-call/ 2010-08-17T20:54:48+00:00 weekly 0.6 http://www.calliflower.com/how-to-set-social-networking-settings-for-your-conference-call/ 2010-08-17T20:52:08+00:00 weekly 0.6 http://www.calliflower.com/calliflower-how-to-guide/ 2010-08-17T20:37:46+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_setup/how-do-i-set-up-a-call-that-happens-every-other-week-same-time-same-group-of-participants/ 2010-08-16T18:45:39+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_during/is-it-possible-to-share-my-screendesktopapplication-with-attendees-is-it-possible-to-request-other-attendees-to-share-their-screens/ 2010-07-28T20:43:23+00:00 weekly 0.6 http://www.calliflower.com/blogroll/ 2010-07-26T23:45:31+00:00 weekly 0.6 http://www.calliflower.com/2010/07/26/how-to-record-a-conference-call/ 2010-07-26T10:09:49+00:00 daily 0.6 http://www.calliflower.com/faq/faq_during/what-is-the-difference-between-a-conference-call-organizer-and-a-conference-call-moderator/ 2010-07-26T09:51:25+00:00 weekly 0.6 http://www.calliflower.com/2010/05/17/10-podcaster-tips/ 2010-07-26T09:39:59+00:00 daily 0.6 http://www.calliflower.com/faq/faq_about/does-calliflower-have-a-free-version-how-do-i-sign-up/ 2010-07-26T09:08:18+00:00 weekly 0.6 http://www.calliflower.com/to-open-source-or-not/ 2010-07-22T20:29:38+00:00 weekly 0.6 http://www.calliflower.com/rule-4-segment/ 2010-07-22T20:28:24+00:00 weekly 0.6 http://www.calliflower.com/rule-3-the-top-5-rule/ 2010-07-22T20:27:57+00:00 weekly 0.6 http://www.calliflower.com/rule-2-build-an-effective-organization/ 2010-07-22T20:26:58+00:00 weekly 0.6 http://www.calliflower.com/rule-1-have-and-effective-plan/ 2010-07-22T20:26:01+00:00 weekly 0.6 http://www.calliflower.com/parsing-net/ 2010-07-22T20:25:31+00:00 weekly 0.6 http://www.calliflower.com/voice-20/ 2010-07-21T19:35:24+00:00 weekly 0.6 http://www.calliflower.com/alecs-list-of-ottawa-blogs/ 2010-07-21T19:34:26+00:00 weekly 0.6 http://www.calliflower.com/about-2/ 2010-07-21T19:33:41+00:00 weekly 0.6 http://www.calliflower.com/reading-list/ 2010-07-21T19:31:00+00:00 weekly 0.6 http://www.calliflower.com/general/ 2010-07-21T16:32:08+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_trouble/how-do-i-adjust-the-timing-of-the-auto-reminders-that-go-out-to-the-participants-about-the-call/ 2010-07-20T14:10:10+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_setup/while-sharing-a-power-point-presentation-will-he-animations-work/ 2010-07-20T14:08:23+00:00 weekly 0.6 http://www.calliflower.com/international-conference-call-network/ 2010-07-20T13:58:12+00:00 weekly 0.6 http://www.calliflower.com/2010/05/01/effective-team-meetings-and-project-reviews/ 2010-07-06T17:54:32+00:00 daily 0.6 http://www.calliflower.com/2009/07/13/7-ways-to-make-free-conference-calls/ 2010-07-06T13:30:50+00:00 daily 0.6 http://www.calliflower.com/2009/05/12/what-are-the-real-costs-of-free-conference-call-services/ 2010-07-05T21:47:28+00:00 daily 0.6 http://www.calliflower.com/faq/faq_about/how-do-you-add-more-than-one-moderator-on-a-call/ 2010-07-01T12:40:25+00:00 weekly 0.6 http://www.calliflower.com/2008/09/20/an-evening-with-alan-alda-things-i-overheard-while-talking-to-myself-2/ 2010-06-30T21:07:31+00:00 daily 0.6 http://www.calliflower.com/2008/09/26/an-evening-with-josh-waitzkin-perfecting-your-art-of-learning-2/ 2010-06-30T21:05:49+00:00 daily 0.6 http://www.calliflower.com/2009/04/30/15-ways-to-use-voip-to-save-money-during-the-downturn/ 2010-06-30T11:22:12+00:00 daily 0.6 http://www.calliflower.com/2010/06/29/alex-mandossians-call-to-wall-strategy-is-tailor-made-for-calliflower-users/ 2010-06-29T16:04:12+00:00 daily 0.6 http://www.calliflower.com/2009/01/08/international-association-of-coaching-blog-certification-barriers-%e2%80%93-busted/ 2010-06-29T14:14:37+00:00 daily 0.6 http://www.calliflower.com/faq/faq_pricing/how-much-does-calliflower-cost-is-there-a-free-option/ 2010-06-28T21:08:37+00:00 weekly 0.6 http://www.calliflower.com/2010/04/28/the-power-coaches-secret-weapon/ 2010-06-25T19:17:15+00:00 daily 0.6 http://www.calliflower.com/2010/04/28/sales-presentations-and-teleseminars-that-convert/ 2010-06-25T16:32:32+00:00 daily 0.6 http://www.calliflower.com/2010/04/28/training-without-travel/ 2010-06-25T16:26:32+00:00 daily 0.6 http://www.calliflower.com/2010/06/24/calliflower-rides-through-earthquake-unscathed/ 2010-06-24T14:39:26+00:00 daily 0.6 http://www.calliflower.com/2008/08/06/calliflower-rocks-for-conference-calls-business-hacks-bnet/ 2010-06-24T13:15:36+00:00 daily 0.6 http://www.calliflower.com/2009/06/30/big-apps-for-small-business-financial-post/ 2010-06-24T11:37:21+00:00 daily 0.6 http://www.calliflower.com/2010/06/23/what-creative-things-are-you-doing-with-calliflower/ 2010-06-24T02:35:30+00:00 daily 0.6 http://www.calliflower.com/2009/04/07/seths-blog-reinventing-the-conference-call/ 2010-06-23T21:01:40+00:00 daily 0.6 http://www.calliflower.com/2009/02/02/cata-adds-to-its-web-2-0-office-saves-a-bundle-with-calliflower-conference-calling-and-document-sharing-by-iotum/ 2010-06-23T15:57:11+00:00 daily 0.6 http://www.calliflower.com/company/ 2010-06-23T14:34:10+00:00 weekly 0.6 http://www.calliflower.com/2010/05/20/completely-free-conference-calling-really-billeater-com/ 2010-06-23T14:31:16+00:00 daily 0.6 http://www.calliflower.com/2009/05/05/the-top-10-voip-influencers/ 2010-06-23T14:20:26+00:00 daily 0.6 http://www.calliflower.com/2010/03/12/social-media-blog-8-interactive-and-social-tools-you-may-not-be-using-yet/ 2010-06-23T14:14:31+00:00 daily 0.6 http://www.calliflower.com/2009/11/11/5-leading-voip-services-that-are-skype-or-gizmo5-alternatives/ 2010-06-21T15:45:34+00:00 daily 0.6 http://www.calliflower.com/1970/01/01/calliflower-get-more-with-your-group-conference-calls/ 2010-06-21T15:35:48+00:00 daily 0.6 http://www.calliflower.com/2010/06/12/the-tech-guy-labs-leo-laporte-the-tech-guy-on-the-premiere-radio-networks/ 2010-06-21T15:26:35+00:00 daily 0.6 http://www.calliflower.com/2009/02/21/30-free-conference-call-services-articles-idealady-com/ 2010-06-21T15:07:23+00:00 daily 0.6 http://www.calliflower.com/2006/01/01/iotum-fiercevoip/ 2010-06-21T15:03:03+00:00 daily 0.6 http://www.calliflower.com/affiliate_network/ 2010-06-17T14:33:30+00:00 weekly 0.6 http://www.calliflower.com/2009/09/24/calliflower-updated-new-features-for-teleseminars-coaches-and-distance-learning-users/ 2010-06-17T14:32:01+00:00 daily 0.6 http://www.calliflower.com/2009/02/03/iotum-announces-general-availability-of-calliflower-conferencing-on-iphone/ 2010-06-17T14:25:25+00:00 daily 0.6 http://www.calliflower.com/2006/02/08/iotu-2006-demogod/ 2010-06-17T14:24:17+00:00 daily 0.6 http://www.calliflower.com/screenshots/ 2010-06-17T14:23:11+00:00 weekly 0.6 http://www.calliflower.com/press-kit/ 2010-06-17T14:21:21+00:00 weekly 0.6 http://www.calliflower.com/2010/06/16/how-to-avoid-the-conference-call-security-nightmare/ 2010-06-15T22:15:58+00:00 daily 0.6 http://www.calliflower.com/2010/06/11/calliflower-saves-campus-climate-network-big/ 2010-06-11T14:25:26+00:00 daily 0.6 http://www.calliflower.com/faq/faq_during/how-can-i-test-my-skype-connection-in-advance-of-a-conference-call/ 2010-06-11T11:20:26+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_trouble/how-can-i-invite-someone-to-the-call-after-the-main-invitations-have-gone-out/ 2010-06-09T14:05:27+00:00 weekly 0.6 http://www.calliflower.com/2010/06/08/world-cup-conference-calls/ 2010-06-08T21:40:35+00:00 daily 0.6 http://www.calliflower.com/2010/03/12/8-obscure-interactive-social-tools-%c2%ab-david-alperns-perspectives/ 2010-06-07T16:03:26+00:00 daily 0.6 http://www.calliflower.com/2008/09/11/the-telecommuters-tech-toolbox-database-conference-calls-vpn-pcmag-com/ 2010-06-03T16:17:33+00:00 daily 0.6 http://www.calliflower.com/2009/02/09/conducting-online-meetings-with-calliflower-conference-calling/ 2010-06-02T14:45:10+00:00 daily 0.6 http://www.calliflower.com/2010/06/01/calliflower-customers-can-ignore-fast-companys-10-rules-really/ 2010-06-02T13:09:23+00:00 daily 0.6 http://www.calliflower.com/2010/06/02/do-online-meetings-help-reduce-emissions-you-betcha/ 2010-06-02T13:09:22+00:00 daily 0.6 http://www.calliflower.com/2009/03/01/yes-you-can-build-your-own-web-app-entrepreneur-com/ 2010-05-28T12:33:01+00:00 daily 0.6 http://www.calliflower.com/getting-to-know-calliflower/nc-for-team-meetings-and-project-reviews/ 2010-05-28T01:12:45+00:00 weekly 0.6 http://www.calliflower.com/2008/08/29/calliflower-systeme-de-conference-call-gratuit/ 2010-05-27T15:15:02+00:00 daily 0.6 http://www.calliflower.com/faq/faq_create/if-i-produce-a-webinar-with-calliflower-and-use-a-few-different-online-sources-to-promote-it-is-there-anyway-to-track-which-source-produced-the-attendees/ 2010-05-27T11:03:52+00:00 weekly 0.6 http://www.calliflower.com/2008/09/21/270-tools-for-running-a-business-online/ 2010-05-26T16:08:09+00:00 daily 0.6 http://www.calliflower.com/2008/08/21/the-digital-marketer-free-conference-call-services-on-the-web-quick-and-dirty-tips/ 2010-05-26T05:40:54+00:00 daily 0.6 http://www.calliflower.com/2008/08/07/the-digital-marketer-fast-and-easy-audio-podcasting-tools-quick-and-dirty-tips/ 2010-05-26T05:38:05+00:00 daily 0.6 http://www.calliflower.com/2010/05/26/calliflower-and-your-bottom-line/ 2010-05-26T03:36:23+00:00 daily 0.6 http://www.calliflower.com/2010/05/27/how-web-based-tools-help-it-manage-the-costs-of-conferencing/ 2010-05-26T03:36:22+00:00 daily 0.6 http://www.calliflower.com/2010/05/31/which-companies-will-benefit-the-most-from-calliflower-web-based-conferencing/ 2010-05-26T03:36:22+00:00 daily 0.6 http://www.calliflower.com/2010/05/28/getting-rid-of-the-conference-call-operator/ 2010-05-26T03:36:22+00:00 daily 0.6 http://www.calliflower.com/faq/faq_during/how-do-i-avoid-using-a-pin-with-skype/ 2010-05-25T19:33:19+00:00 weekly 0.6 http://www.calliflower.com/2010/03/11/iotum-partners-up-with-samsung-canada-for-promotion-techvibes-blog/ 2010-05-19T21:13:09+00:00 daily 0.6 http://www.calliflower.com/2009/09/23/iotum-supercharges-online-conferencing-service-for-event-holders-entrepreneurs-and-enterprises/ 2010-05-19T21:12:06+00:00 daily 0.6 http://www.calliflower.com/2010/01/21/iotum-adds-skype-access-to-calliflower-conferencing/ 2010-05-19T21:11:37+00:00 daily 0.6 http://www.calliflower.com/2009/04/27/using-google-ad-manager-to-manage-affiliate-ads/ 2010-05-19T21:10:45+00:00 daily 0.6 http://www.calliflower.com/2010/03/10/samsung-canada-channel-partners-to-offer-calliflower-conferencing-with-new-laptops/ 2010-05-19T21:09:40+00:00 daily 0.6 http://www.calliflower.com/2010/05/18/10-golden-rules-to-rescue-your-monday-morning-conference-call/ 2010-05-19T21:07:29+00:00 daily 0.6 http://www.calliflower.com/2010/05/19/hosting-a-teleseminar-with-calliflower/ 2010-05-19T21:06:24+00:00 daily 0.6 http://www.calliflower.com/our_solution/ 2010-05-19T18:30:26+00:00 weekly 0.6 http://www.calliflower.com/bb/ 2010-05-19T18:20:16+00:00 weekly 0.6 http://www.calliflower.com/asteriskdownload/ 2010-05-19T18:16:08+00:00 weekly 0.6 http://www.calliflower.com/features-redirect/ 2010-05-15T20:30:43+00:00 weekly 0.6 http://www.calliflower.com/2010/05/15/welcome-to-the-new-calliflower-web-presence/ 2010-05-15T20:01:11+00:00 daily 0.6 http://www.calliflower.com/faq/faq_about/what-is-calliflower/ 2010-05-15T18:32:06+00:00 weekly 0.6 http://www.calliflower.com/2010/01/21/iotum%e2%80%99s-calliflower-conference-call-service-adds-skype-access-voice-on-the-web/ 2010-05-15T18:30:05+00:00 daily 0.6 http://www.calliflower.com/2009/09/08/calliflower-is-going-to-make-our-life-a-whole-lot-easier-the-internet-marketing-university/ 2010-05-15T18:27:15+00:00 daily 0.6 http://www.calliflower.com/2008/11/12/calliflower-a-complete-conference-calling-service/ 2010-05-15T18:24:01+00:00 daily 0.6 http://www.calliflower.com/2008/08/28/calliflower-com-conference-calling-made-easy-visit-calliflower-com/ 2010-05-15T18:22:21+00:00 daily 0.6 http://www.calliflower.com/2008/06/24/iotum-launch-calliflower/ 2010-05-15T18:20:51+00:00 daily 0.6 http://www.calliflower.com/2007/10/28/the-voip-weblog-iotums-facebook-conference-adds-control/ 2010-05-15T18:19:46+00:00 daily 0.6 http://www.calliflower.com/2007/06/14/five-enterprise-2-0-startups-to-watch-network-computing/ 2010-05-15T18:17:27+00:00 daily 0.6 http://www.calliflower.com/2006/06/09/building-the-iotum-asterisk-module-oreilly-media/ 2010-05-15T18:16:20+00:00 daily 0.6 http://www.calliflower.com/2009/07/13/calliflower-cool-tool-of-the-week/ 2010-05-15T18:11:27+00:00 daily 0.6 http://www.calliflower.com/2009/10/26/update-on-calliflower-service-issues/ 2010-05-15T17:29:21+00:00 daily 0.6 http://www.calliflower.com/2009/10/07/a-rough-couple-of-days-for-calliflower/ 2010-05-15T17:18:27+00:00 daily 0.6 http://www.calliflower.com/2010/01/21/calliflower-adds-skype-calling/ 2010-05-15T16:44:16+00:00 daily 0.6 http://www.calliflower.com/2010/03/10/save-600-on-calliflower-with-a-new-samsung-notebook-or-netbook/ 2010-05-15T16:39:17+00:00 daily 0.6 http://www.calliflower.com/2010/03/09/samsung-canada-and-iotum-announce-partnership-with-calliflower-stardust-global-ventures/ 2010-05-15T16:29:21+00:00 daily 0.6 http://www.calliflower.com/2010/03/10/get-a-samsung-in-canada-get-one-year-calliflower-service-free-techistan-publication/ 2010-05-15T16:28:14+00:00 daily 0.6 http://www.calliflower.com/2010/03/10/jon-arnolds-analyst-2-0-blog-calliflower-bundled-with-samsung-pcs-why-not/ 2010-05-15T16:26:36+00:00 daily 0.6 http://www.calliflower.com/faq/faq_pricing/how-much-does-calliflower-charge-for-a-20-line-conference-call-100-line-conference-call/ 2010-05-06T14:52:00+00:00 weekly 0.6 http://www.calliflower.com/getting-to-know-calliflower/nc-for-training/ 2010-05-05T02:27:15+00:00 weekly 0.6 http://www.calliflower.com/getting-to-know-calliflower/nc-for-sales/ 2010-05-05T02:26:06+00:00 weekly 0.6 http://www.calliflower.com/getting-to-know-calliflower/nc-for-coaches/ 2010-05-05T02:25:31+00:00 weekly 0.6 http://www.calliflower.com/getting-to-know-calliflower/nc-features/ 2010-05-05T02:24:42+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_setup/what-kind-of-pc-and-software-is-needed-to-run-calliflower-do-i-need-a-pc-to-participate-in-call-what-are-the-technical-requirements/ 2010-05-04T21:09:01+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_during/what-is-the-different-between-presentation-mode-and-collaboration-mode/ 2010-05-04T21:09:01+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_during/what-local-dial-conference-calling-numbers-are-available/ 2010-05-04T21:09:01+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_setup/why-do-i-have-to-use-my-mobile-phone-number-im-calling-from-the-north-pole-and-its-far-too-expensive/ 2010-05-04T21:09:01+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_trouble/some-of-my-participants-did-not-receive-an-email-invitation-do-you-know-why/ 2010-05-04T21:09:01+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_trouble/why-can-some-participants-see-the-document-while-i-can-not-and-see-a-gray-screen-instead/ 2010-05-04T21:09:01+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_during/id-like-to-be-able-to-create-a-clean-recording-without-chimes-or-other-tones-is-it-possible-with-calliflower/ 2010-05-04T21:09:00+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_during/i-would-like-to-be-able-to-share-a-url-while-on-the-call-what-is-the-best-way-to-do-that-can-i-post-a-live-link-to-the-chat/ 2010-05-04T21:09:00+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_during/im-expecting-to-a-large-group-of-people-on-a-conference-call-and-need-to-allow-people-to-raise-hands-in-order-to-speak-how-do-people-raise-hands-and-how-can-i-recognize-them-and-invite-them-to-spe/ 2010-05-04T21:09:00+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_trouble/im-hearing-echoes-and-background-noise-on-my-call-how-do-i-get-rid-of-them/ 2010-05-04T21:09:00+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_affiliate/is-there-an-affiliate-program-available-for-calliflower-do-you-have-a-way-for-me-to-earn-money-reselling-calliflower/ 2010-05-04T21:09:00+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_about/i-was-a-user-of-the-free-conference-calls-application-on-facebook-what-happened-to-it-and-what-will-happen-to-my-calls/ 2010-05-04T21:09:00+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_pricing/how-does-calliflower-help-me-reduce-costs-for-international-conference-calls-im-looking-for-an-affordable-international-conference-call-solution/ 2010-05-04T21:08:40+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_setup/how-does-automatic-recording-work/ 2010-05-04T21:08:40+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_about/how-is-calliflower-different-from-other-collaboration-systems/ 2010-05-04T21:08:40+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_during/i-need-to-be-able-to-interact-with-my-audience-during-a-webinar-what-is-the-best-way-to-manage-questions/ 2010-05-04T21:08:40+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_create/how-do-i-organize-a-conference-call/ 2010-05-04T21:08:39+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_create/how-do-i-invite-participants/ 2010-05-04T21:08:39+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_setup/how-do-i-send-the-same-pin-to-all-my-callers-the-pin-code-changes-for-every-caller-and-its-confusing/ 2010-05-04T21:08:39+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_during/how-do-i-join-a-conference-call/ 2010-05-04T21:08:39+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_affiliate/how-do-i-get-started-with-the-calliflower-affiliate-program/ 2010-05-04T21:08:39+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_mobile/how-do-i-put-a-calliflower-conference-call-into-my-iphone-calendar/ 2010-05-04T21:08:39+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_setup/how-do-i-use-the-same-pin-for-all-my-calls/ 2010-05-04T21:08:39+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_setup/how-do-i-change-the-phone-number-that-appears-in-the-email-invitations/ 2010-05-04T21:08:38+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_after/how-do-i-distribute-a-recording-of-a-large-call-in-email/ 2010-05-04T21:08:38+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_during/how-do-i-create-a-recording-of-my-call/ 2010-05-04T21:08:38+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_trouble/ 2010-05-04T21:08:20+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_after/how-do-i-access-the-recording-of-my-calliflower-call/ 2010-05-04T21:08:20+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_during/how-do-i-access-features-like-mute-and-record-if-im-not-at-my-pc-does-calliflower-support-dial-pad-commands/ 2010-05-04T21:08:20+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_during/how-can-i-stop-people-from-moving-my-slides-while-sharing-a-document-with-calliflower/ 2010-05-04T21:08:20+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_setup/ 2010-05-04T21:08:20+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_create/ 2010-05-04T21:08:19+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_mobile/ 2010-05-04T21:08:19+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_affiliate/ 2010-05-04T21:08:19+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_pricing/ 2010-05-04T21:08:19+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_after/ 2010-05-04T21:08:19+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_during/ 2010-05-04T21:08:19+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_about/ 2010-05-04T21:08:18+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_create/does-everyone-need-to-be-invited-in-order-to-participate-how-can-i-simply-send-people-the-call-in-information/ 2010-05-04T21:08:18+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_after/can-participants-access-share-documents-after-the-call/ 2010-05-04T21:08:18+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_about/do-you-provide-phone-numbers-in-my-city-or-country/ 2010-05-04T21:08:18+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_trouble/calliflower-doesnt-recognize-my-pin-code-what-can-i-do-to-fix-that/ 2010-05-04T21:08:17+00:00 weekly 0.6 http://www.calliflower.com/faq/faq_create/can-i-add-documents-to-the-documents-to-the-meeting-before-the-call/ 2010-05-04T21:08:17+00:00 weekly 0.6 http://www.calliflower.com/privacy-policy/ 2010-05-04T21:07:36+00:00 weekly 0.6 http://www.calliflower.com/terms-of-service/ 2010-05-04T21:07:36+00:00 weekly 0.6 http://www.calliflower.com/posts/ 2010-05-04T21:07:35+00:00 weekly 0.6 http://www.calliflower.com/forum/ 2010-05-04T21:06:38+00:00 weekly 0.6 http://www.calliflower.com/getting-to-know-calliflower/photo-id/ 2010-05-04T21:06:37+00:00 weekly 0.6 http://www.calliflower.com/getting-to-know-calliflower/personal-pin/ 2010-05-04T21:06:36+00:00 weekly 0.6 http://www.calliflower.com/getting-to-know-calliflower/mobile-conference-calls-on-iphone/ 2010-05-04T21:05:41+00:00 weekly 0.6 http://www.calliflower.com/getting-to-know-calliflower/invitations-and-reminders/ 2010-05-04T21:05:40+00:00 weekly 0.6 http://www.calliflower.com/getting-to-know-calliflower/manage-conference-call-invitations-and-reminders/ 2010-05-04T21:05:40+00:00 weekly 0.6 http://www.calliflower.com/getting-to-know-calliflower/intuitive-and-easy-to-use-call-controls/ 2010-05-04T21:05:40+00:00 weekly 0.6 http://www.calliflower.com/getting-to-know-calliflower/interactive-text-chat/ 2010-05-04T21:05:39+00:00 weekly 0.6 http://www.calliflower.com/getting-to-know-calliflower/integrated-with-your-calendar/ 2010-05-04T21:05:39+00:00 weekly 0.6 http://www.calliflower.com/getting-to-know-calliflower/calendar-integration/ 2010-05-04T21:05:38+00:00 weekly 0.6 http://www.calliflower.com/getting-to-know-calliflower/call-dashboard/ 2010-05-04T21:05:38+00:00 weekly 0.6 http://www.calliflower.com/getting-to-know-calliflower/conference-call-recordings-included/ 2010-05-04T21:05:38+00:00 weekly 0.6 http://www.calliflower.com/getting-to-know-calliflower/conference-calling-options-use-your-phone-or-skype/ 2010-05-04T21:05:38+00:00 weekly 0.6 http://www.calliflower.com/careers-with-calliflower/ 2010-05-04T21:05:35+00:00 weekly 0.6 http://www.calliflower.com/2009/04/07/calliflower-international-conference-calling-network-grows-again/ 2010-04-28T22:26:37+00:00 daily 0.6 http://www.calliflower.com/2008/11/17/skype-journal-updates-inum-calliflower-and-entering-last-name-onto-a-blackberry/ 2010-04-28T21:02:20+00:00 daily 0.6 http://www.calliflower.com/2009/06/22/calliflower-international-conference-calling-network-from-iotum-expands-to-30-countries/ 2010-04-13T23:15:57+00:00 daily 0.6 http://www.calliflower.com/2009/03/06/iotum-expands-calliflower-international-conference-calling-network/ 2010-04-13T23:09:50+00:00 daily 0.6 http://www.calliflower.com/2008/11/12/iotum-brings-calliflower-conference-to-iphone-and-unveils-premium-services-for-business-users/ 2010-04-13T22:59:02+00:00 daily 0.6 http://www.calliflower.com/2008/06/25/iotum-talks-business-with-calliflower-conference-calling/ 2010-04-13T22:24:27+00:00 daily 0.6 http://www.calliflower.com/2008/02/27/iotum-free-conference-calls-on-facebook-goes-global/ 2010-04-13T22:21:12+00:00 daily 0.6 http://www.calliflower.com/2007/11/26/iotum-secures-new-capital-investment-from-verdexus/ 2010-04-13T22:18:40+00:00 daily 0.6 http://www.calliflower.com/2007/04/24/iotum-jajah-announce-strategic-alliance/ 2010-04-13T22:17:35+00:00 daily 0.6 http://www.calliflower.com/2007/04/20/iotum-named-cool-vendor-by-gartner-group/ 2010-04-13T22:16:12+00:00 daily 0.6 http://www.calliflower.com/2006/10/26/iotum-launches-relevance-enabled-channel-partner-program/ 2010-04-13T22:14:20+00:00 daily 0.6 http://www.calliflower.com/2006/09/07/aol-to-launch-aim-phoneline-developer-initiative/ 2010-04-13T22:12:01+00:00 daily 0.6 http://www.calliflower.com/2006/06/26/versature-adds-iotum-relevance-engine-to-business-class-voice-over-ip-services/ 2010-04-13T22:09:43+00:00 daily 0.6 http://www.calliflower.com/2006/05/02/televolution-selects-iotum-for-advanced-telecommunications-services/ 2010-04-13T22:07:45+00:00 daily 0.6 http://www.calliflower.com/2006/04/03/iotum-makes-asterisk-ip-pbx-relevant-to-more-enterprise-users/ 2010-04-13T22:06:00+00:00 daily 0.6 http://www.calliflower.com/2006/01/23/iotum-goes-on-the-road/ 2010-04-13T21:28:22+00:00 daily 0.6 http://www.calliflower.com/2006/02/09/iotum-wins-demogod-award/ 2010-04-13T21:27:12+00:00 daily 0.6 http://www.calliflower.com/2006/01/16/iotums-relevance-engine-receives-internet-telephony-magazines-product-of-the-year-award-for-2005/ 2010-04-13T21:21:00+00:00 daily 0.6 http://www.calliflower.com/2006/01/10/iotum-deemed-relevant-for-demo-2006/ 2010-04-13T21:16:57+00:00 daily 0.6 http://www.calliflower.com/2005/12/05/fwd-becomes-first-u-s-based-voice-2-0-network-to-deploy-iotum-relevance-engine/ 2010-04-13T21:08:50+00:00 daily 0.6 http://www.calliflower.com/2005/10/26/iotum-to-support-epygi-quadro-3-1-release/ 2010-04-13T21:03:21+00:00 daily 0.6 http://www.calliflower.com/2005/10/25/voip-itsp-unlimitel-and-iotum-to-introduce-iotum-relevance-engine-to-unlimitel-customers-in-quebec-and-ontario/ 2010-04-13T21:00:21+00:00 daily 0.6 http://www.calliflower.com/2009/07/10/new-calliflower-features-ways-to-pay/ 2010-04-11T21:28:03+00:00 daily 0.6 http://www.calliflower.com/2009/05/06/socializing-the-calliflower-website/ 2010-04-11T21:48:44+00:00 daily 0.6 http://www.calliflower.com/back-soon/ 2009-04-23T19:42:40+00:00 weekly 0.6 http://www.calliflower.com/2009/03/06/ecomm-%e2%80%93-strong-stuff/ 2009-03-06T20:09:26+00:00 daily 0.6 http://www.calliflower.com/2009/02/20/calliflower-international-conference-call-network-upgraded-again/ 2009-02-20T20:50:09+00:00 daily 0.6 http://www.calliflower.com/2008/10/15/an-evening-with-al-turtle-the-map-to-successful-relationships-2/ 2008-10-15T23:11:09+00:00 daily 0.6 http://www.calliflower.com/finally-a-to-do-list-i-can-love-jott/ 2008-09-04T12:14:27+00:00 weekly 0.6 http://www.calliflower.com/2008/08/25/an-evening-with-ken-blanchard-being-a-one-minute-entrepreneur-2/ 2008-08-25T17:54:53+00:00 daily 0.6 http://www.calliflower.com/2008/08/21/coming-soon-an-evening-with-ariane-de-bonvoisin/ 2008-08-21T23:30:25+00:00 daily 0.6 http://www.calliflower.com/producer-editor-internship/ 2008-08-20T13:05:49+00:00 weekly 0.6 http://www.calliflower.com/2008/08/06/coming-soon-an-evening-with-gabor-mate/ 2008-08-06T23:30:26+00:00 daily 0.6 http://www.calliflower.com/2008/07/21/an-evening-with-peter-senge-the-necessary-revolution-2/ 2008-07-21T23:40:18+00:00 daily 0.6 http://www.calliflower.com/2008/06/26/an-evening-with-william-shatner-up-till-now-2/ 2008-06-26T23:00:27+00:00 daily 0.6 http://www.calliflower.com/barcampradio-this-friday/ 2008-04-17T01:47:22+00:00 weekly 0.6 http://www.calliflower.com/2008/01/16/macworld-has-stuffed-my-rss-feed/ 2008-01-16T11:39:15+00:00 daily 0.6 http://www.calliflower.com/2007/10/23/ecomm-2008-son-of-etel/ 2007-10-23T09:53:38+00:00 daily 0.6 http://www.calliflower.com/2007/10/14/royal-sands-cancun-resort-rentals/ 2007-10-15T00:51:09+00:00 daily 0.6 http://www.calliflower.com/royal-sands-cancun-resort-rentals/ 2007-10-15T00:37:54+00:00 weekly 0.6 http://www.calliflower.com/yucatan-travelogue-2007/ 2007-10-15T00:14:48+00:00 weekly 0.6 http://www.calliflower.com/2006/10/09/eight-men-escorted-off-plane-in-chicago/ 2006-10-09T17:21:21+00:00 daily 0.6 http://www.calliflower.com/2006/08/14/natures-inferno/ 2006-08-14T14:47:13+00:00 daily 0.6 http://www.calliflower.com/2006/08/13/vacationing-in-palm-desert/ 2006-08-13T14:34:15+00:00 daily 0.6 http://www.calliflower.com/2006/08/12/all-normal-at-sfo/ 2006-08-12T19:27:58+00:00 daily 0.6 http://www.calliflower.com/test/ 2006-05-10T15:26:40+00:00 weekly 0.6 http://www.calliflower.com/2005/10/12/i-sold-a-photo/ 2005-10-12T15:29:56+00:00 daily 0.6 http://www.calliflower.com/2005/10/06/bench/ 2005-10-07T00:32:39+00:00 daily 0.6 http://www.calliflower.com/katrina-relief-microsoft-employees-pitch-in/ 2005-09-15T01:24:03+00:00 weekly 0.6 http://www.calliflower.com/stock-photograph-license/ 2005-09-13T01:03:26+00:00 weekly 0.6 http://www.calliflower.com/2005/09/05/visit-to-the-bonnechere-caves/ 2005-09-05T21:56:49+00:00 daily 0.6 http://www.calliflower.com/2005/04/07/1451/ 2005-04-07T23:50:27+00:00 daily 0.6 http://www.calliflower.com/2005/04/06/1449/ 2005-04-07T01:34:53+00:00 daily 0.6 http://www.calliflower.com/technology/ 2005-04-03T12:37:51+00:00 weekly 0.6 http://www.calliflower.com/2005/03/31/139/ 2005-03-31T02:17:06+00:00 daily 0.6 http://www.calliflower.com/2005/03/28/142/ 2005-03-28T03:49:06+00:00 daily 0.6 http://www.calliflower.com/2005/03/27/143/ 2005-03-27T12:30:07+00:00 daily 0.6 http://www.calliflower.com/2005/03/26/144/ 2005-03-26T12:40:08+00:00 daily 0.6 http://www.calliflower.com/2005/03/26/145/ 2005-03-26T02:47:26+00:00 daily 0.6 http://www.calliflower.com/2005/03/24/146/ 2005-03-24T14:19:35+00:00 daily 0.6 http://www.calliflower.com/2005/03/24/147/ 2005-03-24T12:43:13+00:00 daily 0.6 http://www.calliflower.com/2005/03/23/162/ 2005-03-23T13:22:16+00:00 daily 0.6 http://www.calliflower.com/2005/03/22/149/ 2005-03-22T14:44:56+00:00 daily 0.6 http://www.calliflower.com/2005/03/21/150/ 2005-03-21T10:18:36+00:00 daily 0.6 http://www.calliflower.com/2005/03/20/151/ 2005-03-20T12:30:15+00:00 daily 0.6 http://www.calliflower.com/2005/03/19/152/ 2005-03-19T12:22:29+00:00 daily 0.6 http://www.calliflower.com/2005/03/19/153/ 2005-03-19T03:07:58+00:00 daily 0.6 http://www.calliflower.com/2005/03/17/154/ 2005-03-17T02:17:50+00:00 daily 0.6 http://www.calliflower.com/2005/03/16/155/ 2005-03-16T11:57:23+00:00 daily 0.6 http://www.calliflower.com/2005/03/16/156/ 2005-03-16T11:49:15+00:00 daily 0.6 http://www.calliflower.com/2005/03/13/157/ 2005-03-13T11:24:16+00:00 daily 0.6 http://www.calliflower.com/2005/03/13/158/ 2005-03-13T02:22:35+00:00 daily 0.6 http://www.calliflower.com/forum/calliflower-on-the-web/avoiding-plaxo/ 2011-09-18T07:33:25+00:00 daily 0.5 http://www.calliflower.com/forum/calliflower-on-the-web/is-there-a-way-to-create-categories-of-users-in-the-address-book/ 2011-09-18T07:17:24+00:00 daily 0.5 http://www.calliflower.com/forum/calliflower-on-the-web/skype-5-5-0-113-update-has-removed-keypad-for-dtmf-tones/ 2011-09-12T02:32:48+00:00 daily 0.5 http://www.calliflower.com/forum/new-users-support/skype-hd-audio/ 2011-02-13T14:21:07+00:00 daily 0.5 http://www.calliflower.com/forum/calliflower-on-the-web/is-there-a-way-to-track-which-source-produced-the-attendees-at-my-call/ 2010-05-26T15:25:53+00:00 daily 0.5 http://www.calliflower.com/forum/new-users-support/welcome/ 2010-05-26T15:13:42+00:00 daily 0.5 http://www.calliflower.com/forum/new-users-support/what-is-calliflower/ 2010-05-15T18:32:06+00:00 daily 0.5 http://www.calliflower.com/forum/new-affiliates/maximize-the-earning-potential-of-your-website/ 2010-04-29T17:47:38+00:00 daily 0.5 http://www.calliflower.com/forum/calliflower-on-the-web/i-need-to-be-able-to-have-someone-else-organize-a-call-on-my-behalf-how-do-i-add-a-delegate-organizer-to-my-calliflower-premium-account/ 2010-04-26T12:55:29+00:00 daily 0.5 sitemap.xml.gz0000644002347300047320000003023711656660657013236 0ustar vonfabpsaclnܝKsX #j5[ܻYD/ѻ IX$@ɪ_ϛAJġ.Ld盟f)J8qC%x~Y ee(?/跏y=}?hUzOp9J?͒My̒mmn_۬L: 86.XF( $|Ow P}I:ߥQFF?ٛ^`*L4 gUG?LuOOڏ/!:4J?`a0ggS<>%7g+ Hp;xCf/{2 scLhG쇸e?{qs~Q}_>Cu2Rէ7,$/:? _ø~ogpiǗy_>j 4N8~U/{.}e}'6yj$b77u0+!zgw0y{&nu>K0z+'A—`AhVSDgQ4G7/ľ( 6\U7q:xm>FA3rX$sԿ0}0zw u'K`x =2Cct9򼊶Vaqp*Ͻ[S]C2ߧ\3@ r RsEC?K%y)ź@/4 6 8r,&B3N^Yh~~3tqyj%O|pW]yx=<(! q0> (ܜ}ػ`x?pk[i:WՍe1M knN,oxa8z Z&+zNoka4yt7uK߯h=۶rz >gԠ5*f Mv nѰe |SYEL |rdj,'^H:V5QpuES<;ari+ o㪅v,tߗd|>Bm\}g`0:=']R /P4KS9͹fW1StrkG{8h|Dlo? N3mj+?)yy {\P0-SY$^"<(%yP+чbBJS%'넃GlߔQ0BaW"}^U! .%{bdZH 9=BJ*BؘLƛ ΠZʻ-]vCn:Y|nsSCm:8=L>#$j^$c"!ΒD#B@ .kY} "!W֗1il~3]ז=!ؒ'|< ?hAI8'1Of \"nNMl`kى5c܉0{/2l jPm';0#C{õL:yǴ3ɱ( v- hw҃ 4ZfwPi ׋E6\Zb2׏iϹ6Y#Cg$P BR#oRܮՒ ~]T! E׻#3x&N+B}Gҧ_=]G/~}⥩" K.l;ʜ6z>F(xEbPn 9px⣛qA&ωIyg\[5\԰M&\HIIۊ";%pݲ 3`05 ih4z8|^I;Y@ݲyfR \i"a7pG?d6 Ṭ&L/"csկ-\ d+iC??ZM.U\IzoJ2db  -Γ-gQu,ӆ“hT\mApB36?JIgMjhkbv O>z sE-??ATLXY"xpQnF{}4`圕S<ѤVU2KOH0}␋&YC![hAdO92ko1"^6,.hHh%)DsBjre {h˘A>f'~~K~ٗm4:SzxSGgb#.2E;T61;21J˒ k/5}.NKIRzeۭH׺X9/Qo-oel-Z8GxŇ#dB/9uƶI#Sex[ YbRLHחYbY4v5]\ F_>Aye%!̢`O)4thDZiV{WUĮ4wl[7]P+emy fGO !77umש5D^imjW}"> }tC_ b)Cþ-"߅ɢ{Jk^^ЯdBOEQ*uFB[qj88 jA1 4IRk,h-$]QЭЕf0 PՕƦJihď01TNb S411 %~ElGK{d}YKR]25^h b.{4VU'>m[=iJ߀K\rWFm>óȸƨ%~o0 G jA;%6@v¢0N0 Ik6x܁>#ԙR+bWcn9X@=6JN"Aj`Y,٣pmkYSx*e_ {<4^E  ĭZ|MwG7j x+UEP]ͥ#kp\*ەSEխ;59;w+#Ȓ2Q<̓L5}%z w]%()9m3S %U9>kS+D>LX%׳}>Sx,,C=kL \YE)sD: EAS'ߏ )_,h(rÄ=[U @Lʅ: Qݗ)&mk*\jdm'B-k =nfZH.-dރt`2:oyE4Yfď`({̓7m_N۠&Ĺ~;4ѫ~y}K|g2 mێ)f)gyrL; {ۊչ뷽M0rD _w?Xs#@/J )f< ~5,[2گ8Nzd2ykI7K >NtW - ] 3S-mLtp)ד=kzTQO-K_Q=VA/4s`!<[ͳr 2pҴR.:*G KDCۆowwг27=A0I% ʘNc7W5-4D:Wqrm9Fu~~ѻpohi?.y'ùkHQz9׿ Ⱃ"%Е zG=,@-&! (aJ噸gY C`R*"mmcԢ$^qZaKpUn*+C ָl䔓7|4ߤݮ @f>Үl^kޭ"`@qG4 IC_ז !<̀@E`g̉ vZBLfPqRvl]N ;ʹ7\;ն.!j!orA$t5 \3mP&*cy0qXM]7d+.)C} AA$f=s:X#VQKV"0T tdZPAwO]fw}>h2Y[D|\ozw5&|I/(̫/{qe֗JA3&*'T%i)1<&BIzұsƽ]ush@\ Ә`xseĊ(&4TKaC%\ b-iJ\.9s­Y&M}_BH+dN;oh3+_]cڽP1E1֨ >6>6i Sjbɏ]$?7]dٲdΙ.3cգ #BT{aYN')tGj +kAo'D_uTm1T]4W}>9@!NH離Ul@w<(X:̴q 3a'{HpP*6&̠KY(ʟx+Oˬ2e5l*M2!¡qi1B~L}e:ą#F2%jI FvrQ4R<^FBHF lgc8ZN}6duARt)o=tOM=[YI2. 잹C6[`tՙ،6M,M=>=f+?~s ᡙPvTjߣ bd>\ڢ5HGz0ߋPKR_F8j-{^._c:9 [v/P q>: `b__278 7I%&A{meҔ tdWrE+*ɛx>9eS+ HxZm?mel~]O%##p7r|M0Gr_EYiu&CVYJ)MWkn/'01 _vilR OQpOF^/s}JM2O jCcqwm!T$nہn}ӈ>RQ+ݝ3Onk[Bu.o {T4UT_g_);h@&rKkm$g-ٲJMlġ$("&ߡ3`?l𴣈=ۄT> xWu߃`͍Zt tAzf>wĺI>R1lj ~,j&,D%9۷Hy%@v@+jTVsgIS;>Bd$jZ_ehN,&t={Ӻ8TK4*>Rq[ZNCαȰ>.#M At>wgp{dEW j%++5L4[~"ؔȂ7 3tĎ}Jy〃$6V2Ua UraE;qn4B yZ1)ZEFpîW)))=XzHX,vrf;SFN[jikÎp 8WelFiVkĝl}qS4E]#H[E>)-&^t!yQ)~[jz(u+eme'noW,v/)Zm R %ddH͞ƠZKK5T~Ȍ,:/,&(@r|sdngXc(<Ö|`1~ϒ^8;oJt}L /Nk?cztzA7"UTе5T͒~2VLzw_J%݌E-HSWqr,SznD\Q$U |)GO,Bv(;XV랂k+"Z㟒KkGb }LVaaiH\2%B痉wW %iaiA4[Ma8ucOj"hN2 eڌh{&/-gd%N>'-+)GGf5{w9~2HwOB&Q#všL9o+}XSLz18lQ`֭ƠBCBx٦MXdq*Q琪cl'1D6>( X(>\3b0֨-$4WTӼg")Ө]2Xhʛ gC \kmSVe$]PF\ 7":K7p*-.w ͑s^=H4Mackh-evɇoڵ#Jhؼ /4OV*eU,Ĝ`NC5{ _cBaH[jA]n|aMd#}ʺ[wOKF!ݮ#-|(STe'f4YP/쾩Te1BWdy]j=H)q钘Fxt]dih#-f)޾"b\WѹNHS r}&lJt8ʦj! Dx1#m.rJ\ˉo垇Lxͯ)'qݶPC~mڡ)F*#KVX\PȖ^)Y5N{Q'sHXz+!lhB*=^u崏H+Ճl%ωO,f.2o,aDyNY; чJP+`d_tm}VS[ڎ,E|Q`_~fJ5Yo{qDi7.[( tS+&-,)D#sl(6VG )+&Ǿqn{RP;(gWf-$O9lm+NU?[atGn}Ⱥ4v3=r)_:se&:iS.Ou&ȚRgj%",P!y9!'QUY̺B´ 8aƔ )k;C$uW/®Αi(W-m4//T~.BMv-5IXC ?&{.hՠ1+,C IetKiɐsjrIDUžR^RE׬/;:h6( Ш6Qdӈ{r!F'}~ gp1{XvgA0. A&LqlmpR0t~/7 *qkd٩:eM>`JƁdke2Ytz[@}N`!j(ԲOy}FeLymu$8Ɲ] f&Mwx7 l7~_FQwkn& XnkߜmZSs8ދ~APfDz?w?oZվ4fXTYqLuF[ @1Ƴ"S+[t&|*C #2Ծ#>֞)" yX`kpAc-ad戗KUTVcsi@F8F2ޛ)L֗}n"O4>ʬ;ku-)e[ڬ' P|vQ<>+*L w%A3jvP #fӉ,'&& ~G[,Irrr>IR&^'˶p])?tPEϯz֙շ|.<: co$[t p=Q3܍l([qg6v3eave-MgNfP.)M`E7oh'kڻ}Q"?wo̻V6a2)PIv;:܉(n=J^5h-]ˬi5jzlo;{խ] l f8kdK킥E kffUO80st؝ӊb@>)wpnuk=R3gH R0]谓,w[>LWҡuflJj6(&[> i2P,>fsIX"ߕz/Q61g)|GV׋z}+jkߩl70--_pDku[B$%ƛWD k(ۉ~Ԧ\UWʒp䭀2'  xlegIez;;T84oV>(_/LUI|j30Ӥ.Gjo=B܎I'b$]IfdI[suÍ}ugAE4+X q$p^4kمI^ $)=zl coE>=`0t>wо~czzvzkIęF M2bI:2`;$hϢCnǕmN/۶sfDMj]H}X2X "9e=z0yzZn=w̻H[.3:1QWq7Pp]!gܤ؄<1doׁ~ A 04~k7oFIH_؞X~yiAXɸAG7OMcz&2l^G=qsO֙1Ol2cpwł wMrLmmJ[LE/0LB\9JN: 4g+s$ (=4 ӂPC9):$c%U#VZVЩyvUs%U-F]'8ubLѤ2Zm掷3,dRwޒǻCǿմ]:eyuA,|-ÔkKZ2cíLy*.̛Ib4'@28 }j@L]ڒLkLkګr?ő V6mt>lo`9cVe$95iJ@&15I*Tǖi+:5@2hFp8lpR`Ho-@ՇlA d P])XȳB箥&y M$@ 7steps.php0000644002347300047320000003012711656660657012300 0ustar vonfabpsacln Mint: Server Compatibility Suite

Mint Server Compatibility Suite

Proceed to Step Two.' ); break; case '2': $heading = 'Step Two: Server Navigability or "Will Mint be Able to Find Its Way Around Your Server?"'; // Check presence of undefined $_GET indexes if (strpos($_SERVER['QUERY_STRING'],'gettest') && !isset($_GET['gettest'])) { $flag = 1; $results[] = array ( 'Mint will not be able to gather visit data because your server does not populate the PHP global $_GET array as expected.', 0 ); } else { $results[] = array ( 'Your server populates the PHP global $_GET array as expected.', 1 ); } /** / // Check for document root if (!isset($_SERVER['DOCUMENT_ROOT']) || empty($_SERVER['DOCUMENT_ROOT'])) { $results[] = array ( 'Your server does not identify the document root. You will need to get this information from your host and manually configure Mint.', 2 ); } else { // Check for wrong document root if (!is_dir($_SERVER['DOCUMENT_ROOT'].'/mint-scs/')) { $results[] = array ( 'Your server does not correctly identify the document root. You will need to get this information from your host and manually configure Mint.', 2 ); } else { $results[] = array ( 'Mint was able to locate your document root.', 1 ); // Check for install directory detection $install_dir = preg_replace("/[^\/]*$/","",((!empty($_SERVER['PHP_SELF']))?$_SERVER['PHP_SELF']:$_SERVER['SCRIPT_URL'])); if (!is_dir($_SERVER['DOCUMENT_ROOT'].$install_dir)) { $flag = 1; $results[] = array ( 'Mint is unable to determine its position in your server document hierarchy.', 0 ); } else { $results[] = array ( 'Mint should have no trouble finding Pepper and related files on your server.', 1 ); } } } /**/ $dbform = <<This info will not be transmitted back to haveamint.com. The next step will attempt to connect to your database using the credentials provided below. It will then create a table named "mint_scs", alter that table by adding an additional column and then delete the table, simulating the actions Mint makes during normal use.

Database Server
Database Username
Database Password
Database Name

Disclaimer: I am not responsible for any data-loss that occurs as a result of this test. HERE; $tail = array ( 'I\'m sorry but your server is not compatible with the current version of Mint.', $dbform ); break; case '3': $heading = 'Step Three: Database Connectivity and Permissions'; $db = $_POST['db']; // Check for database server connection if (!@mysql_pconnect($db['server'],$db['username'],$db['password'])) { $flag = 1; $results[] = array ( 'Could not connect to the database server. Error: '.mysql_error(), 0 ); } else { $results[] = array ( 'Connected to the database server successfully.', 1 ); // Check database selection if (!@mysql_select_db($db['database'])) { $flag = 1; $results[] = array ( 'Could not select the database. Error: '.mysql_error(), 0 ); } else { $results[] = array ( 'Selected the database successfully.', 1 ); // Check CREATE privileges $query = "CREATE TABLE `mint_scs` (id int(10) unsigned NOT NULL auto_increment, PRIMARY KEY (id)) TYPE=MyISAM;"; if (!$result = mysql_query($query)) { $flag = 1; $results[] = array ( 'Could not create the table "mint_scs". Error: '.mysql_error(), 0 ); } else { $results[] = array ( 'Created the table "mint_scs" successfully.', 1 ); // Check ALTER privileges $query = "ALTER TABLE `mint_scs` ADD tmp VARCHAR(15) NOT NULL"; if (!$result = mysql_query($query)) { $flag = 1; $results[] = array ( 'Could not alter the table "mint_scs". Error: '.mysql_error(), 0 ); } else { $results[] = array ( 'Altered the table "mint_scs" successfully.', 1 ); } // Check DROP privileges $query = "DROP TABLE `mint_scs`"; if (!$result = mysql_query($query)) { $flag = 1; $results[] = array ( 'Could not delete the table "mint_scs". Error: '.mysql_error(), 0 ); } else { $results[] = array ( 'Deleted the table "mint_scs" successfully.', 1 ); } } } } $tail = array ( 'I\'m sorry but you will not be able to install or use Mint without being able to connect to and modify your MySQL database. Please contact your host to make sure that you have the correct database login and permissions.', 'Not too shabby, you\'ve done this before, haven\'t you? Proceed to Step Four.' ); break; case '4': $heading = 'Step Four: Mint Gateway Connectivity'; // Check connectivity, returns false on success, error string on failure $response = gateway('Compatibility Suite Ping','dt='.time()); if ($response !== false) { $flag = 1; $results[] = array ( $response, 0 ); } else { $results[] = array ( 'Connected to the gateway successfully.', 1 ); } $tail = array ( 'I\'m sorry but your server does not appear to be able to connect to the Mint Gateway. Please see this FAQ for possible workarounds.', 'Green means go! Mint is totally crushing on your server—be a pal and hook them up!' ); break; default: $heading = 'Misstep'; $flag = 1; $tail = array ( 'Oops, looks like you may have taken a wrong turn somewhere back there. Start over.', '' ); break; } // Format results $html .= '

'.$heading.'

'; if (!empty($results)) { $html .= '
    '; foreach ($results as $item) { switch ($item[1]) { case 2: $html .= '
  1. Δ'; break; case 1: $html .= '
  2. '; break; case 0: $html .= '
  3. ×'; break; } $html .= $item[0].'
  4. '; } $html .= '
'; } switch ($flag) { case 1: $html .= '

'.$tail[0].'

'; break; default: $html .= '

'.$tail[1].'

'; break; } echo $html; ?>

The Mint Server Compatibility Suite helps you determine whether or not your server has the necessary technology and your database user has the necessary permissions required to install and use Mint.

(Please note that passing the Mint Server Compatibility Suite does not guarantee that Mint will run on your server. It simply confirms that your server offers the base features Mint requires.)

styles.css0000644002347300047320000000212311656660657012461 0ustar vonfabpsaclnbody { position: relative; background-color: #FFF; margin: 0; padding: 48px 0; font: 76%/1.6em "Lucida Grande", Verdana, Arial, sans-serif; color: #333; text-align: center; } a:hover { text-decoration: none; } div#container { width: 400px; margin: 0 auto; text-align: left; } .disclaimer { font-size: 0.92em; padding: 0.3em 1.0em; border: 1px solid #F2F2C2; background-color: #FFC; } h1 { font-size: 2.0em; font-weight: normal; line-height: 1.2em; } h2 { color: #7B9F53; font-size: 1.8em; font-weight: normal; line-height: 1.4em; } ol { margin: 0 0 1.0em; padding: 0.3em 1.0em; list-style: none; } li { color: #C00; position: relative; height: 1%; padding-left: 24px; } li span { position: absolute; top: 1px; left: 0; color: #FFF; background-color: #A11; padding: 1px; width: 14px; height: 14px; line-height: 12px; font-weight: bold; text-align: center; vertical-align: middle; } .pass { color: #00550D; } li.pass span { background-color: #00550D; } .caution { color: #CA0; } li.caution span { background-color: #CA0; } .fail { color: #A11; }trynow.html0000644002347300047320000000457311656660660012661 0ustar vonfabpsacln Mouse Eye Tracking by PicNet Software Development Services updatecount.php0000644002347300047320000000417611656660660013474 0ustar vonfabpsacln"; // Display message to user for each post comment count successfully updated } } updateCount(); ?>web.config0000644002347300047320000000111411656660660012361 0ustar vonfabpsacln wp-activate.php0000644002347300047320000001036111656660660013356 0ustar vonfabpsaclncache_enabled = false; do_action("activate_header"); function do_activate_header() { do_action("activate_wp_head"); } add_action( 'wp_head', 'do_activate_header' ); function wpmu_activate_stylesheet() { ?>


get_error_code() || 'blog_taken' == $result->get_error_code() ) { $signup = $result->get_error_data(); ?>

'; if ( $signup->domain . $signup->path == '' ) { printf( __('Your account has been activated. You may now log in to the site using your chosen username of “%2$s”. Please check your email inbox at %3$s for your password and login instructions. If you do not receive an email, please check your junk or spam folder. If you still do not receive an email within an hour, you can reset your password.'), network_site_url( 'wp-login.php', 'login' ), $signup->user_login, $signup->user_email, network_site_url( 'wp-login.php?action=lostpassword', 'login' ) ); } else { printf( __('Your site at %2$s is active. You may now log in to your site using your chosen username of “%3$s”. Please check your email inbox at %4$s for your password and login instructions. If you do not receive an email, please check your junk or spam folder. If you still do not receive an email within an hour, you can reset your password.'), 'http://' . $signup->domain, $signup->domain, $signup->user_login, $signup->user_email, network_site_url( 'wp-login.php?action=lostpassword' ) ); } echo '

'; } else { ?>

'.$result->get_error_message().'

'; } } else { extract($result); $url = get_blogaddress_by_id( (int) $blog_id); $user = new WP_User( (int) $user_id); ?>

user_login ?>

View your site or Login'), $url, $url . 'wp-login.php' ); ?>

Login or go back to the homepage.' ), network_site_url('wp-login.php', 'login'), network_home_url() ); ?>

wp-admin/0000755002347300047320000000000011656660434012133 5ustar vonfabpsaclnwp-admin/admin-ajax.php0000644002347300047320000013126711656660266014672 0ustar vonfabpsaclnALERT: You are logged out! Could not save draft. Please log in again.'), wp_login_url() ); $x = new WP_Ajax_Response( array( 'what' => 'autosave', 'id' => $id, 'data' => $message ) ); $x->send(); } if ( !empty( $_REQUEST['action'] ) ) do_action( 'wp_ajax_nopriv_' . $_REQUEST['action'] ); die('-1'); } if ( isset( $_GET['action'] ) ) : switch ( $action = $_GET['action'] ) : case 'fetch-list' : $list_class = $_GET['list_args']['class']; check_ajax_referer( "fetch-list-$list_class", '_ajax_fetch_list_nonce' ); $current_screen = (object) $_GET['list_args']['screen']; //TODO fix this in a better way see #15336 $current_screen->is_network = 'false' === $current_screen->is_network ? false : true; $current_screen->is_user = 'false' === $current_screen->is_user ? false : true; define( 'WP_NETWORK_ADMIN', $current_screen->is_network ); define( 'WP_USER_ADMIN', $current_screen->is_user ); $wp_list_table = _get_list_table( $list_class ); if ( ! $wp_list_table ) die( '0' ); if ( ! $wp_list_table->ajax_user_can() ) die( '-1' ); $wp_list_table->ajax_response(); die( '0' ); break; case 'ajax-tag-search' : if ( isset( $_GET['tax'] ) ) { $taxonomy = sanitize_key( $_GET['tax'] ); $tax = get_taxonomy( $taxonomy ); if ( ! $tax ) die( '0' ); if ( ! current_user_can( $tax->cap->assign_terms ) ) die( '-1' ); } else { die('0'); } $s = stripslashes( $_GET['q'] ); if ( false !== strpos( $s, ',' ) ) { $s = explode( ',', $s ); $s = $s[count( $s ) - 1]; } $s = trim( $s ); if ( strlen( $s ) < 2 ) die; // require 2 chars for matching $results = $wpdb->get_col( $wpdb->prepare( "SELECT t.name FROM $wpdb->term_taxonomy AS tt INNER JOIN $wpdb->terms AS t ON tt.term_id = t.term_id WHERE tt.taxonomy = %s AND t.name LIKE (%s)", $taxonomy, '%' . like_escape( $s ) . '%' ) ); echo join( $results, "\n" ); die; break; case 'wp-compression-test' : if ( !current_user_can( 'manage_options' ) ) die('-1'); if ( ini_get('zlib.output_compression') || 'ob_gzhandler' == ini_get('output_handler') ) { update_site_option('can_compress_scripts', 0); die('0'); } if ( isset($_GET['test']) ) { 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' ); header('Content-Type: application/x-javascript; charset=UTF-8'); $force_gzip = ( defined('ENFORCE_GZIP') && ENFORCE_GZIP ); $test_str = '"wpCompressionTest Lorem ipsum dolor sit amet consectetuer mollis sapien urna ut a. Eu nonummy condimentum fringilla tempor pretium platea vel nibh netus Maecenas. Hac molestie amet justo quis pellentesque est ultrices interdum nibh Morbi. Cras mattis pretium Phasellus ante ipsum ipsum ut sociis Suspendisse Lorem. Ante et non molestie. Porta urna Vestibulum egestas id congue nibh eu risus gravida sit. Ac augue auctor Ut et non a elit massa id sodales. Elit eu Nulla at nibh adipiscing mattis lacus mauris at tempus. Netus nibh quis suscipit nec feugiat eget sed lorem et urna. Pellentesque lacus at ut massa consectetuer ligula ut auctor semper Pellentesque. Ut metus massa nibh quam Curabitur molestie nec mauris congue. Volutpat molestie elit justo facilisis neque ac risus Ut nascetur tristique. Vitae sit lorem tellus et quis Phasellus lacus tincidunt nunc Fusce. Pharetra wisi Suspendisse mus sagittis libero lacinia Integer consequat ac Phasellus. Et urna ac cursus tortor aliquam Aliquam amet tellus volutpat Vestibulum. Justo interdum condimentum In augue congue tellus sollicitudin Quisque quis nibh."'; if ( 1 == $_GET['test'] ) { echo $test_str; die; } elseif ( 2 == $_GET['test'] ) { if ( !isset($_SERVER['HTTP_ACCEPT_ENCODING']) ) die('-1'); if ( false !== stripos( $_SERVER['HTTP_ACCEPT_ENCODING'], 'deflate') && function_exists('gzdeflate') && ! $force_gzip ) { header('Content-Encoding: deflate'); $out = gzdeflate( $test_str, 1 ); } elseif ( false !== stripos( $_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') && function_exists('gzencode') ) { header('Content-Encoding: gzip'); $out = gzencode( $test_str, 1 ); } else { die('-1'); } echo $out; die; } elseif ( 'no' == $_GET['test'] ) { update_site_option('can_compress_scripts', 0); } elseif ( 'yes' == $_GET['test'] ) { update_site_option('can_compress_scripts', 1); } } die('0'); break; case 'imgedit-preview' : $post_id = intval($_GET['postid']); if ( empty($post_id) || !current_user_can('edit_post', $post_id) ) die('-1'); check_ajax_referer( "image_editor-$post_id" ); include_once( ABSPATH . 'wp-admin/includes/image-edit.php' ); if ( ! stream_preview_image($post_id) ) die('-1'); die(); break; case 'menu-quick-search': if ( ! current_user_can( 'edit_theme_options' ) ) die('-1'); require_once ABSPATH . 'wp-admin/includes/nav-menu.php'; _wp_ajax_menu_quick_search( $_REQUEST ); exit; break; case 'oembed-cache' : $return = ( $wp_embed->cache_oembed( $_GET['post'] ) ) ? '1' : '0'; die( $return ); break; default : do_action( 'wp_ajax_' . $_GET['action'] ); die('0'); break; endswitch; endif; /** * Sends back current comment total and new page links if they need to be updated. * * Contrary to normal success AJAX response ("1"), die with time() on success. * * @since 2.7 * * @param int $comment_id * @return die */ function _wp_ajax_delete_comment_response( $comment_id, $delta = -1 ) { $total = (int) @$_POST['_total']; $per_page = (int) @$_POST['_per_page']; $page = (int) @$_POST['_page']; $url = esc_url_raw( @$_POST['_url'] ); // JS didn't send us everything we need to know. Just die with success message if ( !$total || !$per_page || !$page || !$url ) die( (string) time() ); $total += $delta; if ( $total < 0 ) $total = 0; // Only do the expensive stuff on a page-break, and about 1 other time per page if ( 0 == $total % $per_page || 1 == mt_rand( 1, $per_page ) ) { $post_id = 0; $status = 'total_comments'; // What type of comment count are we looking for? $parsed = parse_url( $url ); if ( isset( $parsed['query'] ) ) { parse_str( $parsed['query'], $query_vars ); if ( !empty( $query_vars['comment_status'] ) ) $status = $query_vars['comment_status']; if ( !empty( $query_vars['p'] ) ) $post_id = (int) $query_vars['p']; } $comment_count = wp_count_comments($post_id); if ( isset( $comment_count->$status ) ) // We're looking for a known type of comment count $total = $comment_count->$status; // else use the decremented value from above } $time = time(); // The time since the last comment count $x = new WP_Ajax_Response( array( 'what' => 'comment', 'id' => $comment_id, // here for completeness - not used 'supplemental' => array( 'total_items_i18n' => sprintf( _n( '1 item', '%s items', $total ), number_format_i18n( $total ) ), 'total_pages' => ceil( $total / $per_page ), 'total_pages_i18n' => number_format_i18n( ceil( $total / $per_page ) ), 'total' => $total, 'time' => $time ) ) ); $x->send(); } function _wp_ajax_add_hierarchical_term() { $action = $_POST['action']; $taxonomy = get_taxonomy(substr($action, 4)); check_ajax_referer( $action, '_ajax_nonce-add-' . $taxonomy->name ); if ( !current_user_can( $taxonomy->cap->edit_terms ) ) die('-1'); $names = explode(',', $_POST['new'.$taxonomy->name]); $parent = isset($_POST['new'.$taxonomy->name.'_parent']) ? (int) $_POST['new'.$taxonomy->name.'_parent'] : 0; if ( 0 > $parent ) $parent = 0; if ( $taxonomy->name == 'category' ) $post_category = isset($_POST['post_category']) ? (array) $_POST['post_category'] : array(); else $post_category = ( isset($_POST['tax_input']) && isset($_POST['tax_input'][$taxonomy->name]) ) ? (array) $_POST['tax_input'][$taxonomy->name] : array(); $checked_categories = array_map( 'absint', (array) $post_category ); $popular_ids = wp_popular_terms_checklist($taxonomy->name, 0, 10, false); foreach ( $names as $cat_name ) { $cat_name = trim($cat_name); $category_nicename = sanitize_title($cat_name); if ( '' === $category_nicename ) continue; if ( !($cat_id = term_exists($cat_name, $taxonomy->name, $parent)) ) { $new_term = wp_insert_term($cat_name, $taxonomy->name, array('parent' => $parent)); $cat_id = $new_term['term_id']; } $checked_categories[] = $cat_id; if ( $parent ) // Do these all at once in a second continue; $category = get_term( $cat_id, $taxonomy->name ); ob_start(); wp_terms_checklist( 0, array( 'taxonomy' => $taxonomy->name, 'descendants_and_self' => $cat_id, 'selected_cats' => $checked_categories, 'popular_cats' => $popular_ids )); $data = ob_get_contents(); ob_end_clean(); $add = array( 'what' => $taxonomy->name, 'id' => $cat_id, 'data' => str_replace( array("\n", "\t"), '', $data), 'position' => -1 ); } if ( $parent ) { // Foncy - replace the parent and all its children $parent = get_term( $parent, $taxonomy->name ); $term_id = $parent->term_id; while ( $parent->parent ) { // get the top parent $parent = &get_term( $parent->parent, $taxonomy->name ); if ( is_wp_error( $parent ) ) break; $term_id = $parent->term_id; } ob_start(); wp_terms_checklist( 0, array('taxonomy' => $taxonomy->name, 'descendants_and_self' => $term_id, 'selected_cats' => $checked_categories, 'popular_cats' => $popular_ids)); $data = ob_get_contents(); ob_end_clean(); $add = array( 'what' => $taxonomy->name, 'id' => $term_id, 'data' => str_replace( array("\n", "\t"), '', $data), 'position' => -1 ); } ob_start(); wp_dropdown_categories( array( 'taxonomy' => $taxonomy->name, 'hide_empty' => 0, 'name' => 'new'.$taxonomy->name.'_parent', 'orderby' => 'name', 'hierarchical' => 1, 'show_option_none' => '— '.$taxonomy->labels->parent_item.' —' ) ); $sup = ob_get_contents(); ob_end_clean(); $add['supplemental'] = array( 'newcat_parent' => $sup ); $x = new WP_Ajax_Response( $add ); $x->send(); } $id = isset($_POST['id'])? (int) $_POST['id'] : 0; switch ( $action = $_POST['action'] ) : case 'delete-comment' : // On success, die with time() instead of 1 if ( !$comment = get_comment( $id ) ) die( (string) time() ); if ( !current_user_can( 'edit_post', $comment->comment_post_ID ) ) die('-1'); check_ajax_referer( "delete-comment_$id" ); $status = wp_get_comment_status( $comment->comment_ID ); $delta = -1; if ( isset($_POST['trash']) && 1 == $_POST['trash'] ) { if ( 'trash' == $status ) die( (string) time() ); $r = wp_trash_comment( $comment->comment_ID ); } elseif ( isset($_POST['untrash']) && 1 == $_POST['untrash'] ) { if ( 'trash' != $status ) die( (string) time() ); $r = wp_untrash_comment( $comment->comment_ID ); if ( ! isset( $_POST['comment_status'] ) || $_POST['comment_status'] != 'trash' ) // undo trash, not in trash $delta = 1; } elseif ( isset($_POST['spam']) && 1 == $_POST['spam'] ) { if ( 'spam' == $status ) die( (string) time() ); $r = wp_spam_comment( $comment->comment_ID ); } elseif ( isset($_POST['unspam']) && 1 == $_POST['unspam'] ) { if ( 'spam' != $status ) die( (string) time() ); $r = wp_unspam_comment( $comment->comment_ID ); if ( ! isset( $_POST['comment_status'] ) || $_POST['comment_status'] != 'spam' ) // undo spam, not in spam $delta = 1; } elseif ( isset($_POST['delete']) && 1 == $_POST['delete'] ) { $r = wp_delete_comment( $comment->comment_ID ); } else { die('-1'); } if ( $r ) // Decide if we need to send back '1' or a more complicated response including page links and comment counts _wp_ajax_delete_comment_response( $comment->comment_ID, $delta ); die( '0' ); break; case 'delete-tag' : $tag_id = (int) $_POST['tag_ID']; check_ajax_referer( "delete-tag_$tag_id" ); $taxonomy = !empty($_POST['taxonomy']) ? $_POST['taxonomy'] : 'post_tag'; $tax = get_taxonomy($taxonomy); if ( !current_user_can( $tax->cap->delete_terms ) ) die('-1'); $tag = get_term( $tag_id, $taxonomy ); if ( !$tag || is_wp_error( $tag ) ) die('1'); if ( wp_delete_term($tag_id, $taxonomy)) die('1'); else die('0'); break; case 'delete-link' : check_ajax_referer( "delete-bookmark_$id" ); if ( !current_user_can( 'manage_links' ) ) die('-1'); $link = get_bookmark( $id ); if ( !$link || is_wp_error( $link ) ) die('1'); if ( wp_delete_link( $id ) ) die('1'); else die('0'); break; case 'delete-meta' : check_ajax_referer( "delete-meta_$id" ); if ( !$meta = get_post_meta_by_id( $id ) ) die('1'); if ( !current_user_can( 'edit_post', $meta->post_id ) || is_protected_meta( $meta->meta_key ) ) die('-1'); if ( delete_meta( $meta->meta_id ) ) die('1'); die('0'); break; case 'delete-post' : check_ajax_referer( "{$action}_$id" ); if ( !current_user_can( 'delete_post', $id ) ) die('-1'); if ( !get_post( $id ) ) die('1'); if ( wp_delete_post( $id ) ) die('1'); else die('0'); break; case 'trash-post' : case 'untrash-post' : check_ajax_referer( "{$action}_$id" ); if ( !current_user_can( 'delete_post', $id ) ) die('-1'); if ( !get_post( $id ) ) die('1'); if ( 'trash-post' == $action ) $done = wp_trash_post( $id ); else $done = wp_untrash_post( $id ); if ( $done ) die('1'); die('0'); break; case 'delete-page' : check_ajax_referer( "{$action}_$id" ); if ( !current_user_can( 'delete_page', $id ) ) die('-1'); if ( !get_page( $id ) ) die('1'); if ( wp_delete_post( $id ) ) die('1'); else die('0'); break; case 'dim-comment' : // On success, die with time() instead of 1 if ( !$comment = get_comment( $id ) ) { $x = new WP_Ajax_Response( array( 'what' => 'comment', 'id' => new WP_Error('invalid_comment', sprintf(__('Comment %d does not exist'), $id)) ) ); $x->send(); } if ( !current_user_can( 'edit_post', $comment->comment_post_ID ) && !current_user_can( 'moderate_comments' ) ) die('-1'); $current = wp_get_comment_status( $comment->comment_ID ); if ( $_POST['new'] == $current ) die( (string) time() ); check_ajax_referer( "approve-comment_$id" ); if ( in_array( $current, array( 'unapproved', 'spam' ) ) ) $result = wp_set_comment_status( $comment->comment_ID, 'approve', true ); else $result = wp_set_comment_status( $comment->comment_ID, 'hold', true ); if ( is_wp_error($result) ) { $x = new WP_Ajax_Response( array( 'what' => 'comment', 'id' => $result ) ); $x->send(); } // Decide if we need to send back '1' or a more complicated response including page links and comment counts _wp_ajax_delete_comment_response( $comment->comment_ID ); die( '0' ); break; case 'add-link-category' : // On the Fly check_ajax_referer( $action ); 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); $slug = sanitize_title($cat_name); if ( '' === $slug ) continue; if ( !$cat_id = term_exists( $cat_name, 'link_category' ) ) { $cat_id = wp_insert_term( $cat_name, 'link_category' ); } $cat_id = $cat_id['term_id']; $cat_name = esc_html(stripslashes($cat_name)); $x->add( array( 'what' => 'link-category', 'id' => $cat_id, 'data' => "", 'position' => -1 ) ); } $x->send(); break; case 'add-tag' : check_ajax_referer( 'add-tag' ); $post_type = !empty($_POST['post_type']) ? $_POST['post_type'] : 'post'; $taxonomy = !empty($_POST['taxonomy']) ? $_POST['taxonomy'] : 'post_tag'; $tax = get_taxonomy($taxonomy); if ( !current_user_can( $tax->cap->edit_terms ) ) die('-1'); $x = new WP_Ajax_Response(); $tag = wp_insert_term($_POST['tag-name'], $taxonomy, $_POST ); if ( !$tag || is_wp_error($tag) || (!$tag = get_term( $tag['term_id'], $taxonomy )) ) { $message = __('An error has occurred. Please reload the page and try again.'); if ( is_wp_error($tag) && $tag->get_error_message() ) $message = $tag->get_error_message(); $x->add( array( 'what' => 'taxonomy', 'data' => new WP_Error('error', $message ) ) ); $x->send(); } set_current_screen( $_POST['screen'] ); $wp_list_table = _get_list_table('WP_Terms_List_Table'); $level = 0; if ( is_taxonomy_hierarchical($taxonomy) ) { $level = count( get_ancestors( $tag->term_id, $taxonomy ) ); ob_start(); $wp_list_table->single_row( $tag, $level ); $noparents = ob_get_clean(); } ob_start(); $wp_list_table->single_row( $tag ); $parents = ob_get_clean(); $x->add( array( 'what' => 'taxonomy', 'supplemental' => compact('parents', 'noparents') ) ); $x->add( array( 'what' => 'term', 'position' => $level, 'supplemental' => (array) $tag ) ); $x->send(); break; case 'get-tagcloud' : if ( isset( $_POST['tax'] ) ) { $taxonomy = sanitize_key( $_POST['tax'] ); $tax = get_taxonomy( $taxonomy ); if ( ! $tax ) die( '0' ); if ( ! current_user_can( $tax->cap->assign_terms ) ) die( '-1' ); } else { die('0'); } $tags = get_terms( $taxonomy, array( 'number' => 45, 'orderby' => 'count', 'order' => 'DESC' ) ); if ( empty( $tags ) ) die( isset( $tax->no_tagcloud ) ? $tax->no_tagcloud : __('No tags found!') ); if ( is_wp_error( $tags ) ) die( $tags->get_error_message() ); foreach ( $tags as $key => $tag ) { $tags[ $key ]->link = '#'; $tags[ $key ]->id = $tag->term_id; } // We need raw tag names here, so don't filter the output $return = wp_generate_tag_cloud( $tags, array('filter' => 0) ); if ( empty($return) ) die('0'); echo $return; exit; break; case 'get-comments' : check_ajax_referer( $action ); set_current_screen( 'edit-comments' ); $wp_list_table = _get_list_table('WP_Post_Comments_List_Table'); if ( !current_user_can( 'edit_post', $post_id ) ) die('-1'); $wp_list_table->prepare_items(); if ( !$wp_list_table->has_items() ) die('1'); $comment_list_item = ''; $x = new WP_Ajax_Response(); foreach ( $wp_list_table->items as $comment ) { get_comment( $comment ); ob_start(); $wp_list_table->single_row( $comment ); $comment_list_item .= ob_get_contents(); ob_end_clean(); } $x->add( array( 'what' => 'comments', 'data' => $comment_list_item ) ); $x->send(); break; case 'replyto-comment' : check_ajax_referer( $action, '_ajax_nonce-replyto-comment' ); set_current_screen( 'edit-comments' ); $comment_post_ID = (int) $_POST['comment_post_ID']; if ( !current_user_can( 'edit_post', $comment_post_ID ) ) die('-1'); $status = $wpdb->get_var( $wpdb->prepare("SELECT post_status FROM $wpdb->posts WHERE ID = %d", $comment_post_ID) ); if ( empty($status) ) die('1'); elseif ( in_array($status, array('draft', 'pending', 'trash') ) ) die( __('Error: you are replying to a comment on a draft post.') ); $user = wp_get_current_user(); if ( $user->ID ) { $comment_author = $wpdb->escape($user->display_name); $comment_author_email = $wpdb->escape($user->user_email); $comment_author_url = $wpdb->escape($user->user_url); $comment_content = trim($_POST['content']); if ( current_user_can('unfiltered_html') ) { if ( wp_create_nonce('unfiltered-html-comment_' . $comment_post_ID) != $_POST['_wp_unfiltered_html_comment'] ) { kses_remove_filters(); // start with a clean slate kses_init_filters(); // set up the filters } } } else { die( __('Sorry, you must be logged in to reply to a comment.') ); } if ( '' == $comment_content ) die( __('Error: please type a comment.') ); $comment_parent = absint($_POST['comment_ID']); $commentdata = compact('comment_post_ID', 'comment_author', 'comment_author_email', 'comment_author_url', 'comment_content', 'comment_type', 'comment_parent', 'user_ID'); $comment_id = wp_new_comment( $commentdata ); $comment = get_comment($comment_id); if ( ! $comment ) die('1'); $position = ( isset($_POST['position']) && (int) $_POST['position']) ? (int) $_POST['position'] : '-1'; $x = new WP_Ajax_Response(); ob_start(); if ( 'dashboard' == $_REQUEST['mode'] ) { require_once( ABSPATH . 'wp-admin/includes/dashboard.php' ); _wp_dashboard_recent_comments_row( $comment ); } else { if ( 'single' == $_REQUEST['mode'] ) { $wp_list_table = _get_list_table('WP_Post_Comments_List_Table'); } else { $wp_list_table = _get_list_table('WP_Comments_List_Table'); } $wp_list_table->single_row( $comment ); } $comment_list_item = ob_get_contents(); ob_end_clean(); $x->add( array( 'what' => 'comment', 'id' => $comment->comment_ID, 'data' => $comment_list_item, 'position' => $position )); $x->send(); break; case 'edit-comment' : check_ajax_referer( 'replyto-comment', '_ajax_nonce-replyto-comment' ); set_current_screen( 'edit-comments' ); $comment_post_ID = (int) $_POST['comment_post_ID']; if ( ! current_user_can( 'edit_post', $comment_post_ID ) ) die('-1'); if ( '' == $_POST['content'] ) die( __('Error: please type a comment.') ); $comment_id = (int) $_POST['comment_ID']; $_POST['comment_status'] = $_POST['status']; edit_comment(); $position = ( isset($_POST['position']) && (int) $_POST['position']) ? (int) $_POST['position'] : '-1'; $comments_status = isset($_POST['comments_listing']) ? $_POST['comments_listing'] : ''; $checkbox = ( isset($_POST['checkbox']) && true == $_POST['checkbox'] ) ? 1 : 0; $wp_list_table = _get_list_table( $checkbox ? 'WP_Comments_List_Table' : 'WP_Post_Comments_List_Table' ); ob_start(); $wp_list_table->single_row( get_comment( $comment_id ) ); $comment_list_item = ob_get_contents(); ob_end_clean(); $x = new WP_Ajax_Response(); $x->add( array( 'what' => 'edit_comment', 'id' => $comment->comment_ID, 'data' => $comment_list_item, 'position' => $position )); $x->send(); break; case 'add-menu-item' : if ( ! current_user_can( 'edit_theme_options' ) ) die('-1'); check_ajax_referer( 'add-menu_item', 'menu-settings-column-nonce' ); require_once ABSPATH . 'wp-admin/includes/nav-menu.php'; // For performance reasons, we omit some object properties from the checklist. // The following is a hacky way to restore them when adding non-custom items. $menu_items_data = array(); foreach ( (array) $_POST['menu-item'] as $menu_item_data ) { if ( ! empty( $menu_item_data['menu-item-type'] ) && 'custom' != $menu_item_data['menu-item-type'] && ! empty( $menu_item_data['menu-item-object-id'] ) ) { switch( $menu_item_data['menu-item-type'] ) { case 'post_type' : $_object = get_post( $menu_item_data['menu-item-object-id'] ); break; case 'taxonomy' : $_object = get_term( $menu_item_data['menu-item-object-id'], $menu_item_data['menu-item-object'] ); break; } $_menu_items = array_map( 'wp_setup_nav_menu_item', array( $_object ) ); $_menu_item = array_shift( $_menu_items ); // Restore the missing menu item properties $menu_item_data['menu-item-description'] = $_menu_item->description; } $menu_items_data[] = $menu_item_data; } $item_ids = wp_save_nav_menu_items( 0, $menu_items_data ); if ( is_wp_error( $item_ids ) ) die('-1'); foreach ( (array) $item_ids as $menu_item_id ) { $menu_obj = get_post( $menu_item_id ); if ( ! empty( $menu_obj->ID ) ) { $menu_obj = wp_setup_nav_menu_item( $menu_obj ); $menu_obj->label = $menu_obj->title; // don't show "(pending)" in ajax-added items $menu_items[] = $menu_obj; } } if ( ! empty( $menu_items ) ) { $args = array( 'after' => '', 'before' => '', 'link_after' => '', 'link_before' => '', 'walker' => new Walker_Nav_Menu_Edit, ); echo walk_nav_menu_tree( $menu_items, 0, (object) $args ); } break; case 'add-meta' : check_ajax_referer( 'add-meta', '_ajax_nonce-add-meta' ); $c = 0; $pid = (int) $_POST['post_id']; $post = get_post( $pid ); if ( isset($_POST['metakeyselect']) || isset($_POST['metakeyinput']) ) { if ( !current_user_can( 'edit_post', $pid ) ) die('-1'); if ( isset($_POST['metakeyselect']) && '#NONE#' == $_POST['metakeyselect'] && empty($_POST['metakeyinput']) ) die('1'); if ( $post->post_status == 'auto-draft' ) { $save_POST = $_POST; // Backup $_POST $_POST = array(); // Make it empty for edit_post() $_POST['action'] = 'draft'; // Warning fix $_POST['post_ID'] = $pid; $_POST['post_type'] = $post->post_type; $_POST['post_status'] = 'draft'; $now = current_time('timestamp', 1); $_POST['post_title'] = sprintf('Draft created on %s at %s', date(get_option('date_format'), $now), date(get_option('time_format'), $now)); if ( $pid = edit_post() ) { if ( is_wp_error( $pid ) ) { $x = new WP_Ajax_Response( array( 'what' => 'meta', 'data' => $pid ) ); $x->send(); } $_POST = $save_POST; // Now we can restore original $_POST again if ( !$mid = add_meta( $pid ) ) die(__('Please provide a custom field value.')); } else { die('0'); } } else if ( !$mid = add_meta( $pid ) ) { die(__('Please provide a custom field value.')); } $meta = get_post_meta_by_id( $mid ); $pid = (int) $meta->post_id; $meta = get_object_vars( $meta ); $x = new WP_Ajax_Response( array( 'what' => 'meta', 'id' => $mid, 'data' => _list_meta_row( $meta, $c ), 'position' => 1, 'supplemental' => array('postid' => $pid) ) ); } else { // Update? $mid = (int) array_pop( $var_by_ref = array_keys($_POST['meta']) ); $key = $_POST['meta'][$mid]['key']; $value = $_POST['meta'][$mid]['value']; if ( '' == trim($key) ) die(__('Please provide a custom field name.')); if ( '' == trim($value) ) die(__('Please provide a custom field 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 ( is_protected_meta( $meta->meta_key ) ) die('-1'); if ( $meta->meta_value != stripslashes($value) || $meta->meta_key != stripslashes($key) ) { if ( !$u = update_meta( $mid, $key, $value ) ) die('0'); // We know meta exists; we also know it's unchanged (or DB error, in which case there are bigger problems). } $key = stripslashes($key); $value = stripslashes($value); $x = new WP_Ajax_Response( array( 'what' => 'meta', 'id' => $mid, 'old_id' => $mid, 'data' => _list_meta_row( array( 'meta_key' => $key, 'meta_value' => $value, 'meta_id' => $mid ), $c ), 'position' => 0, 'supplemental' => array('postid' => $meta->post_id) ) ); } $x->send(); break; case 'add-user' : check_ajax_referer( $action ); if ( !current_user_can('create_users') ) die('-1'); if ( !$user_id = add_user() ) die('0'); elseif ( is_wp_error( $user_id ) ) { $x = new WP_Ajax_Response( array( 'what' => 'user', 'id' => $user_id ) ); $x->send(); } $user_object = new WP_User( $user_id ); $wp_list_table = _get_list_table('WP_Users_List_Table'); $x = new WP_Ajax_Response( array( 'what' => 'user', 'id' => $user_id, 'data' => $wp_list_table->single_row( $user_object, '', $user_object->roles[0] ), 'supplemental' => array( 'show-link' => sprintf(__( 'User %s added' ), "user-$user_id", $user_object->user_login), 'role' => $user_object->roles[0] ) ) ); $x->send(); break; case 'autosave' : // The name of this action is hardcoded in edit_post() define( 'DOING_AUTOSAVE', true ); $nonce_age = check_ajax_referer( 'autosave', 'autosavenonce' ); $_POST['post_category'] = explode(",", $_POST['catslist']); if ( $_POST['post_type'] == 'page' || empty($_POST['post_category']) ) unset($_POST['post_category']); $do_autosave = (bool) $_POST['autosave']; $do_lock = true; $data = ''; /* translators: draft saved date format, see http://php.net/date */ $draft_saved_date_format = __('g:i:s a'); /* translators: %s: date and time */ $message = sprintf( __('Draft saved at %s.'), date_i18n( $draft_saved_date_format ) ); $supplemental = array(); if ( isset($login_grace_period) ) $supplemental['session_expired'] = add_query_arg( 'interim-login', 1, wp_login_url() ); $id = $revision_id = 0; $post_ID = (int) $_POST['post_ID']; $_POST['ID'] = $post_ID; $post = get_post($post_ID); if ( 'auto-draft' == $post->post_status ) $_POST['post_status'] = 'draft'; if ( $last = wp_check_post_lock( $post->ID ) ) { $do_autosave = $do_lock = false; $last_user = get_userdata( $last ); $last_user_name = $last_user ? $last_user->display_name : __( 'Someone' ); $data = new WP_Error( 'locked', sprintf( $_POST['post_type'] == 'page' ? __( 'Autosave disabled: %s is currently editing this page.' ) : __( 'Autosave disabled: %s is currently editing this post.' ), esc_html( $last_user_name ) ) ); $supplemental['disable_autosave'] = 'disable'; } 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.')); } if ( $do_autosave ) { // Drafts and auto-drafts are just overwritten by autosave if ( 'auto-draft' == $post->post_status || 'draft' == $post->post_status ) { $id = edit_post(); } else { // Non drafts are not overwritten. The autosave is stored in a special post revision. $revision_id = wp_create_post_autosave( $post->ID ); if ( is_wp_error($revision_id) ) $id = $revision_id; else $id = $post->ID; } $data = $message; } else { if ( isset( $_POST['auto_draft'] ) && '1' == $_POST['auto_draft'] ) $id = 0; // This tells us it didn't actually save else $id = $post->ID; } if ( $do_lock && ( isset( $_POST['auto_draft'] ) && ( $_POST['auto_draft'] != '1' ) ) && $id && is_numeric($id) ) wp_set_post_lock( $id ); if ( $nonce_age == 2 ) { $supplemental['replace-autosavenonce'] = wp_create_nonce('autosave'); $supplemental['replace-getpermalinknonce'] = wp_create_nonce('getpermalink'); $supplemental['replace-samplepermalinknonce'] = wp_create_nonce('samplepermalink'); $supplemental['replace-closedpostboxesnonce'] = wp_create_nonce('closedpostboxes'); if ( $id ) { if ( $_POST['post_type'] == 'post' ) $supplemental['replace-_wpnonce'] = wp_create_nonce('update-post_' . $id); elseif ( $_POST['post_type'] == 'page' ) $supplemental['replace-_wpnonce'] = wp_create_nonce('update-page_' . $id); } } $x = new WP_Ajax_Response( array( 'what' => 'autosave', 'id' => $id, 'data' => $id ? $data : '', 'supplemental' => $supplemental ) ); $x->send(); break; case 'closed-postboxes' : check_ajax_referer( 'closedpostboxes', 'closedpostboxesnonce' ); $closed = isset( $_POST['closed'] ) ? explode( ',', $_POST['closed']) : array(); $closed = array_filter($closed); $hidden = isset( $_POST['hidden'] ) ? explode( ',', $_POST['hidden']) : array(); $hidden = array_filter($hidden); $page = isset( $_POST['page'] ) ? $_POST['page'] : ''; if ( !preg_match( '/^[a-z_-]+$/', $page ) ) die('-1'); if ( ! $user = wp_get_current_user() ) die('-1'); if ( is_array($closed) ) update_user_option($user->ID, "closedpostboxes_$page", $closed, true); if ( is_array($hidden) ) { $hidden = array_diff( $hidden, array('submitdiv', 'linksubmitdiv', 'manage-menu', 'create-menu') ); // postboxes that are always shown update_user_option($user->ID, "metaboxhidden_$page", $hidden, true); } die('1'); break; case 'hidden-columns' : check_ajax_referer( 'screen-options-nonce', 'screenoptionnonce' ); $hidden = isset( $_POST['hidden'] ) ? $_POST['hidden'] : ''; $hidden = explode( ',', $_POST['hidden'] ); $page = isset( $_POST['page'] ) ? $_POST['page'] : ''; if ( !preg_match( '/^[a-z_-]+$/', $page ) ) die('-1'); if ( ! $user = wp_get_current_user() ) die('-1'); if ( is_array($hidden) ) update_user_option($user->ID, "manage{$page}columnshidden", $hidden, true); die('1'); break; case 'menu-get-metabox' : if ( ! current_user_can( 'edit_theme_options' ) ) die('-1'); require_once ABSPATH . 'wp-admin/includes/nav-menu.php'; if ( isset( $_POST['item-type'] ) && 'post_type' == $_POST['item-type'] ) { $type = 'posttype'; $callback = 'wp_nav_menu_item_post_type_meta_box'; $items = (array) get_post_types( array( 'show_in_nav_menus' => true ), 'object' ); } elseif ( isset( $_POST['item-type'] ) && 'taxonomy' == $_POST['item-type'] ) { $type = 'taxonomy'; $callback = 'wp_nav_menu_item_taxonomy_meta_box'; $items = (array) get_taxonomies( array( 'show_ui' => true ), 'object' ); } if ( ! empty( $_POST['item-object'] ) && isset( $items[$_POST['item-object']] ) ) { $item = apply_filters( 'nav_menu_meta_box_object', $items[ $_POST['item-object'] ] ); ob_start(); call_user_func_array($callback, array( null, array( 'id' => 'add-' . $item->name, 'title' => $item->labels->name, 'callback' => $callback, 'args' => $item, ) )); $markup = ob_get_clean(); echo json_encode(array( 'replace-id' => $type . '-' . $item->name, 'markup' => $markup, )); } exit; break; case 'menu-quick-search': if ( ! current_user_can( 'edit_theme_options' ) ) die('-1'); require_once ABSPATH . 'wp-admin/includes/nav-menu.php'; _wp_ajax_menu_quick_search( $_REQUEST ); exit; break; case 'wp-link-ajax': require_once ABSPATH . 'wp-admin/includes/internal-linking.php'; check_ajax_referer( 'internal-linking', '_ajax_linking_nonce' ); $args = array(); if ( isset( $_POST['search'] ) ) $args['s'] = stripslashes( $_POST['search'] ); $args['pagenum'] = ! empty( $_POST['page'] ) ? absint( $_POST['page'] ) : 1; $results = wp_link_query( $args ); if ( ! isset( $results ) ) die( '0' ); echo json_encode( $results ); echo "\n"; exit; break; case 'menu-locations-save': if ( ! current_user_can( 'edit_theme_options' ) ) die('-1'); check_ajax_referer( 'add-menu_item', 'menu-settings-column-nonce' ); if ( ! isset( $_POST['menu-locations'] ) ) die('0'); set_theme_mod( 'nav_menu_locations', array_map( 'absint', $_POST['menu-locations'] ) ); die('1'); break; case 'meta-box-order': check_ajax_referer( 'meta-box-order' ); $order = isset( $_POST['order'] ) ? (array) $_POST['order'] : false; $page_columns = isset( $_POST['page_columns'] ) ? (int) $_POST['page_columns'] : 0; $page = isset( $_POST['page'] ) ? $_POST['page'] : ''; if ( !preg_match( '/^[a-z_-]+$/', $page ) ) die('-1'); if ( ! $user = wp_get_current_user() ) die('-1'); if ( $order ) update_user_option($user->ID, "meta-box-order_$page", $order, true); if ( $page_columns ) update_user_option($user->ID, "screen_layout_$page", $page_columns, true); die('1'); break; case 'get-permalink': check_ajax_referer( 'getpermalink', 'getpermalinknonce' ); $post_id = isset($_POST['post_id'])? intval($_POST['post_id']) : 0; die(add_query_arg(array('preview' => 'true'), get_permalink($post_id))); break; case 'sample-permalink': check_ajax_referer( 'samplepermalink', 'samplepermalinknonce' ); $post_id = isset($_POST['post_id'])? intval($_POST['post_id']) : 0; $title = isset($_POST['new_title'])? $_POST['new_title'] : ''; $slug = isset($_POST['new_slug'])? $_POST['new_slug'] : null; die(get_sample_permalink_html($post_id, $title, $slug)); break; case 'inline-save': check_ajax_referer( 'inlineeditnonce', '_inline_edit' ); if ( ! isset($_POST['post_ID']) || ! ( $post_ID = (int) $_POST['post_ID'] ) ) exit; 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.') ); } set_current_screen( $_POST['screen'] ); if ( $last = wp_check_post_lock( $post_ID ) ) { $last_user = get_userdata( $last ); $last_user_name = $last_user ? $last_user->display_name : __( 'Someone' ); printf( $_POST['post_type'] == 'page' ? __( 'Saving is disabled: %s is currently editing this page.' ) : __( 'Saving is disabled: %s is currently editing this post.' ), esc_html( $last_user_name ) ); exit; } $data = &$_POST; $post = get_post( $post_ID, ARRAY_A ); $post = add_magic_quotes($post); //since it is from db $data['content'] = $post['post_content']; $data['excerpt'] = $post['post_excerpt']; // rename $data['user_ID'] = $GLOBALS['user_ID']; if ( isset($data['post_parent']) ) $data['parent_id'] = $data['post_parent']; // status if ( isset($data['keep_private']) && 'private' == $data['keep_private'] ) $data['post_status'] = 'private'; else $data['post_status'] = $data['_status']; if ( empty($data['comment_status']) ) $data['comment_status'] = 'closed'; if ( empty($data['ping_status']) ) $data['ping_status'] = 'closed'; // update the post edit_post(); $wp_list_table = _get_list_table('WP_Posts_List_Table'); $mode = $_POST['post_view']; $wp_list_table->display_rows( array( get_post( $_POST['post_ID'] ) ) ); exit; break; case 'inline-save-tax': check_ajax_referer( 'taxinlineeditnonce', '_inline_edit' ); $taxonomy = sanitize_key( $_POST['taxonomy'] ); $tax = get_taxonomy( $taxonomy ); if ( ! $tax ) die( '0' ); if ( ! current_user_can( $tax->cap->edit_terms ) ) die( '-1' ); set_current_screen( 'edit-' . $taxonomy ); $wp_list_table = _get_list_table('WP_Terms_List_Table'); if ( ! isset($_POST['tax_ID']) || ! ( $id = (int) $_POST['tax_ID'] ) ) die(-1); $tag = get_term( $id, $taxonomy ); $_POST['description'] = $tag->description; $updated = wp_update_term($id, $taxonomy, $_POST); if ( $updated && !is_wp_error($updated) ) { $tag = get_term( $updated['term_id'], $taxonomy ); if ( !$tag || is_wp_error( $tag ) ) { if ( is_wp_error($tag) && $tag->get_error_message() ) die( $tag->get_error_message() ); die( __('Item not updated.') ); } echo $wp_list_table->single_row( $tag ); } else { if ( is_wp_error($updated) && $updated->get_error_message() ) die( $updated->get_error_message() ); die( __('Item not updated.') ); } exit; break; case 'find_posts': check_ajax_referer( 'find-posts' ); if ( empty($_POST['ps']) ) exit; if ( !empty($_POST['post_type']) && in_array( $_POST['post_type'], get_post_types() ) ) $what = $_POST['post_type']; else $what = 'post'; $s = stripslashes($_POST['ps']); preg_match_all('/".*?("|$)|((?<=[\\s",+])|^)[^\\s",+]+/', $s, $matches); $search_terms = array_map('_search_terms_tidy', $matches[0]); $searchand = $search = ''; foreach ( (array) $search_terms as $term ) { $term = esc_sql( like_escape( $term ) ); $search .= "{$searchand}(($wpdb->posts.post_title LIKE '%{$term}%') OR ($wpdb->posts.post_content LIKE '%{$term}%'))"; $searchand = ' AND '; } $term = esc_sql( like_escape( $s ) ); if ( count($search_terms) > 1 && $search_terms[0] != $s ) $search .= " OR ($wpdb->posts.post_title LIKE '%{$term}%') OR ($wpdb->posts.post_content LIKE '%{$term}%')"; $posts = $wpdb->get_results( "SELECT ID, post_title, post_status, post_date FROM $wpdb->posts WHERE post_type = '$what' AND post_status IN ('draft', 'publish') AND ($search) ORDER BY post_date_gmt DESC LIMIT 50" ); if ( ! $posts ) { $posttype = get_post_type_object($what); exit($posttype->labels->not_found); } $html = ''; foreach ( $posts as $post ) { switch ( $post->post_status ) { case 'publish' : case 'private' : $stat = __('Published'); break; case 'future' : $stat = __('Scheduled'); break; case 'pending' : $stat = __('Pending Review'); break; case 'draft' : $stat = __('Draft'); break; } if ( '0000-00-00 00:00:00' == $post->post_date ) { $time = ''; } else { /* translators: date format in table columns, see http://php.net/date */ $time = mysql2date(__('Y/m/d'), $post->post_date); } $html .= ''; $html .= ''."\n\n"; } $html .= '

'.__('Title').''.__('Date').''.__('Status').'
'.esc_html( $time ).''.esc_html( $stat ).'
'; $x = new WP_Ajax_Response(); $x->add( array( 'what' => $what, 'data' => $html )); $x->send(); break; case 'widgets-order' : check_ajax_referer( 'save-sidebar-widgets', 'savewidgets' ); if ( !current_user_can('edit_theme_options') ) die('-1'); unset( $_POST['savewidgets'], $_POST['action'] ); // save widgets order for all sidebars if ( is_array($_POST['sidebars']) ) { $sidebars = array(); foreach ( $_POST['sidebars'] as $key => $val ) { $sb = array(); if ( !empty($val) ) { $val = explode(',', $val); foreach ( $val as $k => $v ) { if ( strpos($v, 'widget-') === false ) continue; $sb[$k] = substr($v, strpos($v, '_') + 1); } } $sidebars[$key] = $sb; } wp_set_sidebars_widgets($sidebars); die('1'); } die('-1'); break; case 'save-widget' : check_ajax_referer( 'save-sidebar-widgets', 'savewidgets' ); if ( !current_user_can('edit_theme_options') || !isset($_POST['id_base']) ) die('-1'); unset( $_POST['savewidgets'], $_POST['action'] ); do_action('load-widgets.php'); do_action('widgets.php'); do_action('sidebar_admin_setup'); $id_base = $_POST['id_base']; $widget_id = $_POST['widget-id']; $sidebar_id = $_POST['sidebar']; $multi_number = !empty($_POST['multi_number']) ? (int) $_POST['multi_number'] : 0; $settings = isset($_POST['widget-' . $id_base]) && is_array($_POST['widget-' . $id_base]) ? $_POST['widget-' . $id_base] : false; $error = '

' . __('An error has occurred. Please reload the page and try again.') . '

'; $sidebars = wp_get_sidebars_widgets(); $sidebar = isset($sidebars[$sidebar_id]) ? $sidebars[$sidebar_id] : array(); // delete if ( isset($_POST['delete_widget']) && $_POST['delete_widget'] ) { if ( !isset($wp_registered_widgets[$widget_id]) ) die($error); $sidebar = array_diff( $sidebar, array($widget_id) ); $_POST = array('sidebar' => $sidebar_id, 'widget-' . $id_base => array(), 'the-widget-id' => $widget_id, 'delete_widget' => '1'); } elseif ( $settings && preg_match( '/__i__|%i%/', key($settings) ) ) { if ( !$multi_number ) die($error); $_POST['widget-' . $id_base] = array( $multi_number => array_shift($settings) ); $widget_id = $id_base . '-' . $multi_number; $sidebar[] = $widget_id; } $_POST['widget-id'] = $sidebar; foreach ( (array) $wp_registered_widget_updates as $name => $control ) { if ( $name == $id_base ) { if ( !is_callable( $control['callback'] ) ) continue; ob_start(); call_user_func_array( $control['callback'], $control['params'] ); ob_end_clean(); break; } } if ( isset($_POST['delete_widget']) && $_POST['delete_widget'] ) { $sidebars[$sidebar_id] = $sidebar; wp_set_sidebars_widgets($sidebars); echo "deleted:$widget_id"; die(); } if ( !empty($_POST['add_new']) ) die(); if ( $form = $wp_registered_widget_controls[$widget_id] ) call_user_func_array( $form['callback'], $form['params'] ); die(); break; case 'image-editor': $attachment_id = intval($_POST['postid']); if ( empty($attachment_id) || !current_user_can('edit_post', $attachment_id) ) die('-1'); check_ajax_referer( "image_editor-$attachment_id" ); include_once( ABSPATH . 'wp-admin/includes/image-edit.php' ); $msg = false; switch ( $_POST['do'] ) { case 'save' : $msg = wp_save_image($attachment_id); $msg = json_encode($msg); die($msg); break; case 'scale' : $msg = wp_save_image($attachment_id); break; case 'restore' : $msg = wp_restore_image($attachment_id); break; } wp_image_editor($attachment_id, $msg); die(); break; case 'set-post-thumbnail': $post_ID = intval( $_POST['post_id'] ); if ( !current_user_can( 'edit_post', $post_ID ) ) die( '-1' ); $thumbnail_id = intval( $_POST['thumbnail_id'] ); check_ajax_referer( "set_post_thumbnail-$post_ID" ); if ( $thumbnail_id == '-1' ) { delete_post_meta( $post_ID, '_thumbnail_id' ); die( _wp_post_thumbnail_html() ); } if ( set_post_thumbnail( $post_ID, $thumbnail_id ) ) die( _wp_post_thumbnail_html( $thumbnail_id ) ); die( '0' ); break; case 'date_format' : die( date_i18n( sanitize_option( 'date_format', $_POST['date'] ) ) ); break; case 'time_format' : die( date_i18n( sanitize_option( 'time_format', $_POST['date'] ) ) ); break; default : do_action( 'wp_ajax_' . $_POST['action'] ); die('0'); break; endswitch; ?> wp-admin/admin-footer.php0000644002347300047320000000247511656660266015243 0ustar vonfabpsacln
wp-admin/admin-header.php0000644002347300047320000001535611656660267015200 0ustar vonfabpsacln > <?php echo $admin_title; ?> ">
parent_file = $parent_file; $current_screen->parent_base = preg_replace('/\?.*$/', '', $parent_file); $current_screen->parent_base = str_replace('.php', '', $current_screen->parent_base); ?>
wp-admin/admin-post.php0000644002347300047320000000112011656660267014715 0ustar vonfabpsaclnwp-admin/admin.php0000644002347300047320000001471711656660267013752 0ustar vonfabpsaclnflush_rules(); update_option( 'db_upgraded', false ); /** * Runs on the next page load after successful upgrade * * @since 2.8 */ do_action('after_db_upgrade'); } elseif ( get_option('db_version') != $wp_db_version ) { if ( !is_multisite() ) { wp_redirect(admin_url('upgrade.php?_wp_http_referer=' . urlencode(stripslashes($_SERVER['REQUEST_URI'])))); exit; } elseif ( apply_filters( 'do_mu_upgrade', true ) ) { /** * On really small MU installs run the upgrader every time, * else run it less often to reduce load. * * @since 2.8.4b */ $c = get_blog_count(); if ( $c <= 50 || ( $c > 50 && mt_rand( 0, (int)( $c / 50 ) ) == 1 ) ) { require_once( ABSPATH . WPINC . '/http.php' ); $response = wp_remote_get( admin_url( 'upgrade.php?step=1' ), array( 'timeout' => 120, 'httpversion' => '1.1' ) ); do_action( 'after_mu_upgrade', $response ); unset($response); } unset($c); } } require_once(ABSPATH . 'wp-admin/includes/admin.php'); auth_redirect(); nocache_headers(); // Schedule trash collection if ( !wp_next_scheduled('wp_scheduled_delete') && !defined('WP_INSTALLING') ) wp_schedule_event(time(), 'daily', 'wp_scheduled_delete'); set_screen_options(); $date_format = get_option('date_format'); $time_format = get_option('time_format'); wp_reset_vars(array('profile', 'redirect', 'redirect_url', 'a', 'text', 'trackback', 'pingback')); wp_enqueue_script( 'common' ); wp_enqueue_script( 'jquery-color' ); $editing = false; if ( isset($_GET['page']) ) { $plugin_page = stripslashes($_GET['page']); $plugin_page = plugin_basename($plugin_page); } if ( isset($_GET['post_type']) ) $typenow = sanitize_key($_GET['post_type']); else $typenow = ''; if ( isset($_GET['taxonomy']) ) $taxnow = sanitize_key($_GET['taxonomy']); else $taxnow = ''; if ( WP_NETWORK_ADMIN ) require(ABSPATH . 'wp-admin/network/menu.php'); elseif ( WP_USER_ADMIN ) require(ABSPATH . 'wp-admin/user/menu.php'); else require(ABSPATH . 'wp-admin/menu.php'); if ( current_user_can( 'manage_options' ) ) @ini_set( 'memory_limit', apply_filters( 'admin_memory_limit', '256M' ) ); do_action('admin_init'); if ( isset($plugin_page) ) { if ( !empty($typenow) ) $the_parent = $pagenow . '?post_type=' . $typenow; else $the_parent = $pagenow; if ( ! $page_hook = get_plugin_page_hook($plugin_page, $the_parent) ) { $page_hook = get_plugin_page_hook($plugin_page, $plugin_page); // backwards compatibility for plugins using add_management_page if ( empty( $page_hook ) && 'edit.php' == $pagenow && '' != get_plugin_page_hook($plugin_page, 'tools.php') ) { // There could be plugin specific params on the URL, so we need the whole query string if ( !empty($_SERVER[ 'QUERY_STRING' ]) ) $query_string = $_SERVER[ 'QUERY_STRING' ]; else $query_string = 'page=' . $plugin_page; wp_redirect( admin_url('tools.php?' . $query_string) ); exit; } } unset($the_parent); } $hook_suffix = ''; if ( isset($page_hook) ) $hook_suffix = $page_hook; else if ( isset($plugin_page) ) $hook_suffix = $plugin_page; else if ( isset($pagenow) ) $hook_suffix = $pagenow; set_current_screen(); // Handle plugin admin pages. if ( isset($plugin_page) ) { 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) ) wp_die(__('Invalid plugin page')); if ( !( file_exists(WP_PLUGIN_DIR . "/$plugin_page") && is_file(WP_PLUGIN_DIR . "/$plugin_page") ) && !( file_exists(WPMU_PLUGIN_DIR . "/$plugin_page") && is_file(WPMU_PLUGIN_DIR . "/$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'); if ( file_exists(WPMU_PLUGIN_DIR . "/$plugin_page") ) include(WPMU_PLUGIN_DIR . "/$plugin_page"); else include(WP_PLUGIN_DIR . "/$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_redirect( admin_url( 'import.php?invalid=' . $importer ) ); exit; } // Allow plugins to define importers as well if ( !isset($wp_importers) || !isset($wp_importers[$importer]) || ! is_callable($wp_importers[$importer][2])) { if (! file_exists(ABSPATH . "wp-admin/import/$importer.php")) { wp_redirect( admin_url( 'import.php?invalid=' . $importer ) ); exit; } include(ABSPATH . "wp-admin/import/$importer.php"); } $parent_file = 'tools.php'; $submenu_file = 'import.php'; $title = __('Import'); if (! isset($_GET['noheader'])) require_once(ABSPATH . 'wp-admin/admin-header.php'); require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); define('WP_IMPORTING', true); if ( apply_filters( 'force_filtered_html_on_import', false ) ) kses_init_filters(); // Always filter imported data with kses on multisite. call_user_func($wp_importers[$importer][2]); include(ABSPATH . 'wp-admin/admin-footer.php'); // Make sure rules are flushed global $wp_rewrite; $wp_rewrite->flush_rules(false); exit(); } else { do_action("load-$pagenow"); // Backwards compatibility with old load-page-new.php, load-page.php, // and load-categories.php actions. if ( $typenow == 'page' ) { if ( $pagenow == 'post-new.php' ) do_action( 'load-page-new.php' ); elseif ( $pagenow == 'post.php' ) do_action( 'load-page.php' ); } elseif ( $pagenow == 'edit-tags.php' ) { if ( $taxnow == 'category' ) do_action( 'load-categories.php' ); elseif ( $taxnow == 'link_category' ) do_action( 'load-edit-link-categories.php' ); } } if ( !empty($_REQUEST['action']) ) do_action('admin_action_' . $_REQUEST['action']); ?> wp-admin/async-upload.php0000644002347300047320000000502111656660270015237 0ustar vonfabpsaclnpost_type ) wp_die( __( 'Unknown post type.' ) ); $post_type_object = get_post_type_object( 'attachment' ); if ( ! current_user_can( $post_type_object->cap->edit_post, $id ) ) wp_die( __( 'You are not allowed to edit this item.' ) ); if ( 2 == $_REQUEST['fetch'] ) { add_filter('attachment_fields_to_edit', 'media_single_attachment_fields_to_edit', 10, 2); echo get_media_item($id, array( 'send' => false, 'delete' => true )); } else { add_filter('attachment_fields_to_edit', 'media_post_single_attachment_fields_to_edit', 10, 2); echo get_media_item($id); } exit; } check_admin_referer('media-form'); $id = media_handle_upload('async-upload', $_REQUEST['post_id']); if ( is_wp_error($id) ) { echo '
' . __('Dismiss') . ' ' . sprintf(__('“%s” has failed to upload due to an error'), esc_html($_FILES['async-upload']['name']) ) . '
' . esc_html($id->get_error_message()) . '
'; exit; } if ( $_REQUEST['short'] ) { // short form response - attachment ID only echo $id; } else { // long form response - big chunk o html $type = $_REQUEST['type']; echo apply_filters("async_upload_{$type}", $id); } ?> wp-admin/comment.php0000644002347300047320000002101011656660270014276 0ustar vonfabpsacln

$msg

"; include('./admin-footer.php'); die; } switch( $action ) { case 'editcomment' : $title = __('Edit Comment'); add_contextual_help( $current_screen, '

' . __( 'You can edit the information left in a comment if needed. This is often useful when you notice that a commenter has made a typographical error.' ) . '

' . '

' . __( 'You can also moderate the comment from this screen using the Status box, where you can also change the timestamp of the comment.' ) . '

' . '

' . __( 'For more information:' ) . '

' . '

' . __( 'Documentation on Comments' ) . '

' . '

' . __( 'Support Forums' ) . '

' ); wp_enqueue_script('comment'); require_once('./admin-header.php'); $comment_id = absint( $_GET['c'] ); if ( !$comment = get_comment( $comment_id ) ) comment_footer_die( __('Oops, no comment with this ID.') . sprintf(' '.__('Go back').'!', 'javascript:history.go(-1)') ); if ( !current_user_can( 'edit_comment', $comment_id ) ) comment_footer_die( __('You are not allowed to edit this comment.') ); if ( 'trash' == $comment->comment_approved ) comment_footer_die( __('This comment is in the Trash. Please move it out of the Trash if you want to edit it.') ); $comment = get_comment_to_edit( $comment_id ); include('./edit-form-comment.php'); break; case 'delete' : case 'approve' : case 'trash' : case 'spam' : $title = __('Moderate Comment'); $comment_id = absint( $_GET['c'] ); if ( !$comment = get_comment_to_edit( $comment_id ) ) { wp_redirect( admin_url('edit-comments.php?error=1') ); die(); } if ( !current_user_can( 'edit_comment', $comment->comment_ID ) ) { wp_redirect( admin_url('edit-comments.php?error=2') ); die(); } // No need to re-approve/re-trash/re-spam a comment. if ( $action == str_replace( '1', 'approve', $comment->comment_approved ) ) { wp_redirect( admin_url( 'edit-comments.php?same=' . $comment_id ) ); die(); } require_once('./admin-header.php'); $formaction = $action . 'comment'; $nonce_action = 'approve' == $action ? 'approve-comment_' : 'delete-comment_'; $nonce_action .= $comment_id; ?>

comment_approved != '0' ) { // if not unapproved $message = ''; switch ( $comment->comment_approved ) { case '1' : $message = __('This comment is currently approved.'); break; case 'spam' : $message = __('This comment is currently marked as spam.'); break; case 'trash' : $message = __('This comment is currently in the Trash.'); break; } if ( $message ) echo '

' . $message . '

'; } ?>

comment_author_email ) { ?> comment_author_url ) { ?>
comment_author; ?>
comment_author_email; ?>
comment_author_url; ?>
comment_content; ?>

'.__('Go back').'!', 'edit-comments.php') ); if ( !current_user_can( 'edit_comment', $comment->comment_ID ) ) comment_footer_die( __('You are not allowed to edit comments on this post.') ); if ( '' != wp_get_referer() && ! $noredir && false === strpos(wp_get_referer(), 'comment.php') ) $redir = wp_get_referer(); elseif ( '' != wp_get_original_referer() && ! $noredir ) $redir = wp_get_original_referer(); elseif ( in_array( $action, array( 'approvecomment', 'unapprovecomment' ) ) ) $redir = admin_url('edit-comments.php?p=' . absint( $comment->comment_post_ID ) ); else $redir = admin_url('edit-comments.php'); $redir = remove_query_arg( array('spammed', 'unspammed', 'trashed', 'untrashed', 'deleted', 'ids', 'approved', 'unapproved'), $redir ); switch ( $action ) { case 'deletecomment' : wp_delete_comment( $comment_id ); $redir = add_query_arg( array('deleted' => '1'), $redir ); break; case 'trashcomment' : wp_trash_comment($comment_id); $redir = add_query_arg( array('trashed' => '1', 'ids' => $comment_id), $redir ); break; case 'untrashcomment' : wp_untrash_comment($comment_id); $redir = add_query_arg( array('untrashed' => '1'), $redir ); break; case 'spamcomment' : wp_spam_comment($comment_id); $redir = add_query_arg( array('spammed' => '1', 'ids' => $comment_id), $redir ); break; case 'unspamcomment' : wp_unspam_comment($comment_id); $redir = add_query_arg( array('unspammed' => '1'), $redir ); break; case 'approvecomment' : wp_set_comment_status( $comment_id, 'approve' ); $redir = add_query_arg( array( 'approved' => 1 ), $redir ); break; case 'unapprovecomment' : wp_set_comment_status( $comment_id, 'hold' ); $redir = add_query_arg( array( 'unapproved' => 1 ), $redir ); break; } wp_redirect( $redir ); die; break; case 'editedcomment' : $comment_id = absint( $_POST['comment_ID'] ); $comment_post_id = absint( $_POST['comment_post_ID'] ); check_admin_referer( 'update-comment_' . $comment_id ); edit_comment(); $location = ( empty( $_POST['referredby'] ) ? "edit-comments.php?p=$comment_post_id" : $_POST['referredby'] ) . '#comment-' . $comment_id; $location = apply_filters( 'comment_edit_redirect', $location, $comment_id ); wp_redirect( $location ); exit(); break; default: wp_die( __('Unknown action.') ); break; } // end switch include('./admin-footer.php'); ?> wp-admin/css/0000755002347300047320000000000011656660311012715 5ustar vonfabpsaclnwp-admin/css/colors-classic-rtl.css0000644002347300047320000000467211656660271017164 0ustar vonfabpsacln.bar{border-right-color:transparent;border-left-color:#99d;}.plugins .togl{border-right-color:transparent;border-left-color:#ccc;}.post-com-count{background-image:url(../images/bubble_bg-rtl.gif);}.tablenav .tablenav-pages a{background:#eee url(../images/menu-bits-rtl-vs.gif?ver=20101117) repeat-x scroll right -379px;}#upload-menu li.current{border-right-color:transparent;border-left-color:#448abd;}#adminmenu .wp-submenu .current a.current{background:transparent url(../images/menu-bits-rtl-vs.gif?ver=20101117) no-repeat scroll right -289px;}#adminmenu li.wp-menu-separator{background:transparent url(../images/menu-arrows.gif) no-repeat scroll right -34px;}.folded #adminmenu li.wp-menu-separator{background:transparent url(../images/menu-arrows.gif) no-repeat scroll left 5px;}#adminmenu li.wp-has-current-submenu .wp-menu-toggle,#adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle{background:transparent url(../images/menu-bits-rtl-vs.gif?ver=20101117) repeat-x scroll right -207px;}#adminmenu .wp-has-current-submenu ul li a.current{background:url(../images/menu-dark-rtl-vs.gif) top right no-repeat!important;}#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,#adminmenu .menu-top .current{background:url(../images/menu-bits-rtl-vs.gif?ver=20101117) top right repeat-x;}#adminmenu li.wp-has-current-submenu ul li a{background:url(../images/menu-dark-rtl-vs.gif) bottom right no-repeat!important;}#adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle,#adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle{background:transparent url(../images/menu-bits-rtl-vs.gif?ver=20101117) no-repeat right -207px;}#adminmenu .wp-has-submenu:hover .wp-menu-toggle,#adminmenu .wp-menu-open .wp-menu-toggle{background:transparent url(../images/menu-bits-rtl-vs.gif?ver=20101117) repeat-x scroll right -109px;}#adminmenu a.wp-has-submenu{background:#eff8ff url(../images/menu-bits-rtl-vs.gif?ver=20101117) repeat-x scroll right -379px;}#adminmenu .wp-submenu a{background:#fff url(../images/menu-bits-rtl-vs.gif?ver=20101117) no-repeat scroll right -99px;}#adminmenu li.wp-has-current-submenu a.wp-has-submenu{background:#b5b5b5 url(../images/menu-bits-rtl-vs.gif?ver=20101117) repeat-x scroll right top;}.meta-box-sortables .postbox:hover .handlediv{background:transparent url(../images/menu-bits-rtl-vs.gif?ver=20101117) no-repeat scroll right -111px;}#favorite-toggle{background:transparent url(../images/fav-arrow-rtl.gif?ver=20100531) no-repeat right -4px;}wp-admin/css/colors-classic.css0000644002347300047320000007457111656660272016373 0ustar vonfabpsaclnhtml,.wp-dialog{background-color:#fcfcfb;}* html input,* html .widget{border-color:#dfdfdf;}textarea,input[type="text"],input[type="password"],input[type="file"],input[type="button"],input[type="submit"],input[type="reset"],select{border-color:#dfdfdf;background-color:#fff;}kbd,code{background:#eaeaea;}input[readonly]{background-color:#eee;}.find-box-search{border-color:#dfdfdf;background-color:#f1f1f1;}.find-box{background-color:#f1f1f1;}.find-box-inside{background-color:#fff;}a.page-numbers:hover{border-color:#999;}body,#wpbody,.form-table .pre{color:#174f69;}body>#upload-menu{border-bottom-color:#fff;}#postcustomstuff table,#your-profile fieldset,#rightnow,div.dashboard-widget,#dashboard-widgets p.dashboard-widget-links,#replyrow #ed_reply_toolbar input{border-color:#D1E5EE;}#poststuff .inside label.spam,#poststuff .inside label.deleted{color:red;}#poststuff .inside label.waiting{color:orange;}#poststuff .inside label.approved{color:green;}#postcustomstuff table{border-color:#dfdfdf;background-color:#F9F9F9;}#postcustomstuff thead th{background-color:#F1F1F1;}#postcustomstuff table input,#postcustomstuff table textarea{border-color:#dfdfdf;background-color:#fff;}.widefat{border-color:#D1E5EE;background-color:#fff;}div.dashboard-widget-error{background-color:#c43;}div.dashboard-widget-notice{background-color:#cfe1ef;}div.dashboard-widget-submit{border-top-color:#ccc;}div.tabs-panel,.wp-tab-panel,ul.category-tabs li.tabs,ul.add-menu-item-tabs li.tabs,.wp-tab-active{border-color:#dfdfdf;}ul.category-tabs li.tabs,ul.add-menu-item-tabs li.tabs,.wp-tab-active{background-color:#f1f1f1;}input.disabled,textarea.disabled{background-color:#ccc;}#plugin-information .action-button a,#plugin-information .action-button a:hover,#plugin-information .action-button a:visited{color:#fff;}.widget .widget-top,.postbox h3,.stuffbox h3{background:#cfdfe9 url("../images/blue-grad.png?ver=20101102") repeat-x left top;text-shadow:#fff 0 1px 0;}.form-table th,.form-wrap label{color:#222;text-shadow:#fff 0 1px 0;}.description,.form-wrap p{color:#666;}strong .post-com-count span{background-color:#21759b;}.sorthelper{background-color:#ccf3fa;}.ac_match,.subsubsub a.current{color:#000;}.wrap h2{color:#174f69;}.ac_over{background-color:#f0f0b8;}.ac_results{background-color:#fff;border-color:#808080;}.ac_results li{color:#101010;}.alternate,.alt{background-color:#F8F7F3;}.available-theme a.screenshot{background-color:#f1f1f1;border-color:#ddd;}.bar{background-color:#e8e8e8;border-right-color:#99d;}#media-upload,#media-upload .media-item .slidetoggle{background:#fff;}#media-upload .slidetoggle{border-top-color:#dfdfdf;}div.error,.login #login_error{background-color:#ffebe8;border-color:#c00;}div.error a{color:#c00;}.form-invalid{background-color:#ffebe8!important;}.form-invalid input,.form-invalid select{border-color:#c00!important;}.submit{border-color:#DFDFDF;}.highlight{background-color:#e4f2fd;color:#000;}.howto,.nonessential,#edit-slug-box,.form-input-tip,.rss-widget span.rss-date,.subsubsub{color:#666;}.media-item{border-bottom-color:#dfdfdf;}#wpbody-content #media-items .describe{border-top-color:#dfdfdf;}.media-upload-form label.form-help,td.help{color:#9a9a9a;}.post-com-count{background-image:url(../images/bubble_bg.gif);color:#fff;}.post-com-count span{background-color:#bbb;color:#fff;}.post-com-count:hover span{background-color:#d54e21;}.quicktags,.search{background-color:#ccc;color:#000;}.side-info h5{border-bottom-color:#dadada;}.side-info ul{color:#666;}.button,.button-secondary,.submit input,input[type=button],input[type=submit]{border-color:#bbb;color:#464646;}.button:hover,.button-secondary:hover,.submit input:hover,input[type=button]:hover,input[type=submit]:hover{color:#000;border-color:#666;}.button,.submit input,.button-secondary{background:#f2f2f2 url(../images/white-grad.png) repeat-x scroll left top;text-shadow:rgba(255,255,255,1) 0 1px 0;}.button:active,.submit input:active,.button-secondary:active{background:#eee url(../images/white-grad-active.png) repeat-x scroll left top;}input.button-primary,button.button-primary,a.button-primary{border-color:#298cba;font-weight:bold;color:#fff;background:#21759B url(../images/button-grad.png) repeat-x scroll left top;text-shadow:rgba(0,0,0,0.3) 0 -1px 0;}input.button-primary:active,button.button-primary:active,a.button-primary:active{background:#21759b url(../images/button-grad-active.png) repeat-x scroll left top;color:#eaf2fa;}input.button-primary:hover,button.button-primary:hover,a.button-primary:hover,a.button-primary:focus,a.button-primary:active{border-color:#13455b;color:#eaf2fa;}.button-disabled,.button[disabled],.button:disabled,.button-secondary[disabled],.button-secondary:disabled,a.button.disabled{color:#aaa!important;border-color:#ddd!important;}.button-primary-disabled,.button-primary[disabled],.button-primary:disabled{color:#9FD0D5!important;background:#298CBA!important;}a:hover,a:active,a:focus{color:#d54e21;}#wphead #viewsite a:hover,#adminmenu a:hover,#adminmenu ul.wp-submenu a:hover,#the-comment-list .comment a:hover,#rightnow a:hover,#media-upload a.del-link:hover,div.dashboard-widget-submit input:hover,.subsubsub a:hover,.subsubsub a.current:hover,.ui-tabs-nav a:hover,.plugins .inactive a:hover,#all-plugins-table .plugins .inactive a:hover,#search-plugins-table .plugins .inactive a:hover{color:#d54e21;}#the-comment-list .comment-item,#dashboard-widgets #dashboard_quick_press form p.submit{border-color:#dfdfdf;}#side-sortables .category-tabs .tabs a,#side-sortables .add-menu-item-tabs .tabs a,.wp-tab-bar .wp-tab-active a{color:#333;}#rightnow .rbutton{background-color:#ebebeb;color:#264761;}.submitbox .submit{background-color:#464646;color:#ccc;}.plugins a.delete:hover,#all-plugins-table .plugins a.delete:hover,#search-plugins-table .plugins a.delete:hover,.submitbox .submitdelete{color:#f00;border-bottom-color:#f00;}.submitbox .submitdelete:hover,#media-items a.delete:hover{color:#fff;background-color:#f00;border-bottom-color:#f00;}#normal-sortables .submitbox .submitdelete:hover{color:#000;background-color:#f00;border-bottom-color:#f00;}.tablenav .dots{border-color:transparent;}.tablenav .next,.tablenav .prev{border-color:transparent;color:#21759b;}.tablenav .next:hover,.tablenav .prev:hover{border-color:transparent;color:#d54e21;}div.updated,.login .message{background-color:#ffffe0;border-color:#e6db55;}.update-message{color:#000;}a.page-numbers{border-bottom-color:#B8D3E2;}.commentlist li{border-bottom-color:#ccc;}.widefat td,.widefat th{border-color:#dfdfdf;}.widefat th{text-shadow:rgba(255,255,255,0.8) 0 1px 0;}.widefat thead tr th,.widefat tfoot tr th,h3.dashboard-widget-title,h3.dashboard-widget-title span,h3.dashboard-widget-title small,.find-box-head{color:#333;background:#cfdfe9 url(../images/blue-grad.png?ver=20101102) repeat-x scroll left top;}th.sortable a:hover,th.sortable a:active,th.sortable a:focus{color:#333;}h3.dashboard-widget-title small a{color:#d7d7d7;}h3.dashboard-widget-title small a:hover{color:#fff;}a,#adminmenu a,#poststuff #edButtonPreview,#poststuff #edButtonHTML,#the-comment-list p.comment-author strong a,#media-upload a.del-link,#media-items a.delete,.plugins a.delete,.ui-tabs-nav a{color:#21759b;}#adminmenu #awaiting-mod,#adminmenu .update-plugins,#sidemenu a .update-plugins,#rightnow .reallynow{background-color:#464646;color:#fff;-moz-box-shadow:#fff 0 -1px 0;-khtml-box-shadow:#fff 0 -1px 0;-webkit-box-shadow:#fff 0 -1px 0;box-shadow:#fff 0 -1px 0;}#plugin-information .action-button{background-color:#d54e21;color:#fff;}#adminmenu li.current a #awaiting-mod,#adminmenu li a.wp-has-current-submenu .update-plugins{background-color:#464646;color:#fff;-moz-box-shadow:#fff 0 -1px 0;-khtml-box-shadow:#fff 0 -1px 0;-webkit-box-shadow:#fff 0 -1px 0;box-shadow:#fff 0 -1px 0;}div#media-upload-header,div#plugin-information-header{background-color:#f9f9f9;border-bottom-color:#dfdfdf;}#currenttheme img{border-color:#666;}#dashboard_secondary div.dashboard-widget-content ul li a{background-color:#f9f9f9;}input.readonly,textarea.readonly{background-color:#ddd;}#ed_toolbar input,#ed_reply_toolbar input{background:#fff url("../images/fade-butt.png") repeat-x 0 -2px;}#editable-post-name{background-color:#fffbcc;}#edit-slug-box strong,.tablenav .displaying-num,#submitted-on,.submitted-on{color:#777;}.login #nav a{color:#21759b!important;}.login #nav a:hover{color:#d54e21!important;}#footer{color:#777;border-color:#b0c8d7;background:#cfdfe9;background:-moz-linear-gradient(bottom,#cfdfe9,#eff8ff);background:-webkit-gradient(linear,left bottom,left top,from(#cfdfe9),to(#eff8ff));}#media-items,.imgedit-group{border-color:#dfdfdf;}.checkbox,.side-info,.plugins tr,#your-profile #rich_editing{background-color:#fff;}.plugins .inactive,.plugins .inactive th,.plugins .inactive td,tr.inactive+tr.plugin-update-tr .plugin-update{background-color:#efede7;}.plugin-update-tr .update-message{background-color:#fffbe4;border-color:#dfdfdf;}.plugins .active,.plugins .active th,.plugins .active td{color:#000;}.plugins .inactive a{color:#579;}#the-comment-list tr.undo,#the-comment-list div.undo{background-color:#f4f4f4;}#the-comment-list .unapproved{background-color:#ffffe0;}#the-comment-list .approve a{color:#006505;}#the-comment-list .unapprove a{color:#d98500;}table.widefat span.delete a,table.widefat span.trash a,table.widefat span.spam a,#dashboard_recent_comments .delete a,#dashboard_recent_comments .trash a,#dashboard_recent_comments .spam a{color:#bc0b0b;}.widget,#widget-list .widget-top,.postbox,#titlediv,#poststuff .postarea,.stuffbox{border-color:#D1E5EE;}.widget,.postbox{background-color:#fff;}.ui-sortable .postbox h3{color:#174f69;}.widget .widget-top,.ui-sortable .postbox h3:hover{color:#174f69;}.curtime #timestamp{background-image:url(../images/date-button.gif);}#quicktags #ed_link{color:#00f;}#rightnow .youhave{background-color:#f0f6fb;}#rightnow a{color:#448abd;}.tagchecklist span a,#bulk-titles div a{background:url(../images/xit.gif) no-repeat;}.tagchecklist span a:hover,#bulk-titles div a:hover{background:url(../images/xit.gif) no-repeat -10px 0;}#update-nag,.update-nag{background-color:#FFFBCC;border-color:#E6DB55;color:#555;}.login #backtoblog a{color:#464646;}#wphead{border-bottom:#b0c8d7 1px solid;background:#cfdfe9;background:-moz-linear-gradient(bottom,#cfdfe9,#eff8ff);background:-webkit-gradient(linear,left bottom,left top,from(#cfdfe9),to(#eff8ff));}#wphead h1 a{color:#174f69;}#user_info{color:#777;}#user_info a:link,#user_info a:visited,#footer a:link,#footer a:visited{color:#174f69;text-decoration:none;}#user_info a:hover,#footer a:hover{color:#000;text-decoration:underline!important;}div#media-upload-error,.file-error,abbr.required,.widget-control-remove:hover,table.widefat .delete a:hover,table.widefat .trash a:hover,table.widefat .spam a:hover,#dashboard_recent_comments .delete a:hover,#dashboard_recent_comments .trash a:hover #dashboard_recent_comments .spam a:hover{color:#f00;}#pass-strength-result{background-color:#eee;border-color:#ddd!important;}#pass-strength-result.bad{background-color:#ffb78c;border-color:#ff853c!important;}#pass-strength-result.good{background-color:#ffec8b;border-color:#fc0!important;}#pass-strength-result.short{background-color:#ffa0a0;border-color:#f04040!important;}#pass-strength-result.strong{background-color:#c3ff88;border-color:#8dff1c!important;}#quicktags{border-color:#cfdfe9;background-color:#cfdfe9;background-image:url("../images/ed-bg-vs.gif?ver=20101102");}#ed_toolbar input{border-color:#C3C3C3;}#ed_toolbar input:hover{border-color:#aaa;background:#ddd;}#poststuff .wp_themeSkin .mceStatusbar{border-color:#EDEDED;}#poststuff #edButtonPreview,#poststuff #edButtonHTML{background-color:#eff8ff;border-color:#D1E5EE;color:#999;}#poststuff #editor-toolbar .active{border-bottom-color:#eff8ff;background-color:#eff8ff;color:#333;}#post-status-info{background-color:#eff8ff;}.wp_themeSkin *,.wp_themeSkin a:hover,.wp_themeSkin a:link,.wp_themeSkin a:visited,.wp_themeSkin a:active{color:#000;}.wp_themeSkin iframe{background:#fff;}.wp_themeSkin .mceStatusbar{color:#000;background-color:#f5f5f5;}.wp_themeSkin .mceButton{background-color:#e9e8e8;border-color:#B2B2B2;}.wp_themeSkin a.mceButtonEnabled:hover,.wp_themeSkin a.mceButtonActive,.wp_themeSkin a.mceButtonSelected{background:#d5d5d5;border-color:#777!important;}.wp_themeSkin .mceButtonDisabled{border-color:#ccc!important;}.wp_themeSkin .mceListBox .mceText,.wp_themeSkin .mceListBox .mceOpen{border-color:#B2B2B2;background-color:#d5d5d5;}.wp_themeSkin table.mceListBoxEnabled:hover .mceOpen,.wp_themeSkin .mceListBoxHover .mceOpen,.wp_themeSkin .mceListBoxSelected .mceOpen,.wp_themeSkin .mceListBoxSelected .mceText{border-color:#777!important;background-color:#d5d5d5;}.wp_themeSkin table.mceListBoxEnabled:hover .mceText,.wp_themeSkin .mceListBoxHover .mceText{border-color:#777!important;}.wp_themeSkin select.mceListBox{border-color:#B2B2B2;background-color:#fff;}.wp_themeSkin .mceSplitButton a.mceAction,.wp_themeSkin .mceSplitButton a.mceOpen{border-color:#B2B2B2;}.wp_themeSkin .mceSplitButton a.mceOpen:hover,.wp_themeSkin .mceSplitButtonSelected a.mceOpen,.wp_themeSkin table.mceSplitButtonEnabled:hover a.mceAction,.wp_themeSkin .mceSplitButton a.mceAction:hover{background-color:#d5d5d5;border-color:#777!important;}.wp_themeSkin .mceSplitButtonActive{background-color:#B2B2B2;}.wp_themeSkin div.mceColorSplitMenu table{background-color:#ebebeb;border-color:#B2B2B2;}.wp_themeSkin .mceColorSplitMenu a{border-color:#B2B2B2;}.wp_themeSkin .mceColorSplitMenu a.mceMoreColors{border-color:#fff;}.wp_themeSkin .mceColorSplitMenu a.mceMoreColors:hover{border-color:#0A246A;background-color:#B6BDD2;}.wp_themeSkin a.mceMoreColors:hover{border-color:#0A246A;}.wp_themeSkin .mceMenu{border-color:#ddd;}.wp_themeSkin .mceMenu table{background-color:#ebeaeb;}.wp_themeSkin .mceMenu .mceText{color:#000;}.wp_themeSkin .mceMenu .mceMenuItemEnabled a:hover,.wp_themeSkin .mceMenu .mceMenuItemActive{background-color:#f5f5f5;}.wp_themeSkin td.mceMenuItemSeparator{background-color:#aaa;}.wp_themeSkin .mceMenuItemTitle a{background-color:#ccc;border-bottom-color:#aaa;}.wp_themeSkin .mceMenuItemTitle span.mceText{color:#000;}.wp_themeSkin .mceMenuItemDisabled .mceText{color:#888;}.wp_themeSkin tr.mceFirst td.mceToolbar{background:#cfdfe9 url("../images/ed-bg-vs.gif?ver=20101102") repeat-x scroll left top;border-color:#cfdfe9;}.wp-admin #mceModalBlocker{background:#000;}.wp-admin .clearlooks2 .mceFocus .mceTop .mceLeft{background:#444;border-left:1px solid #999;border-top:1px solid #999;-moz-border-radius:4px 0 0 0;-webkit-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px;}.wp-admin .clearlooks2 .mceFocus .mceTop .mceRight{background:#444;border-right:1px solid #999;border-top:1px solid #999;border-top-right-radius:4px;-khtml-border-top-right-radius:4px;-webkit-border-top-right-radius:4px;-moz-border-radius:0 4px 0 0;}.wp-admin .clearlooks2 .mceMiddle .mceLeft{background:#f1f1f1;border-left:1px solid #999;}.wp-admin .clearlooks2 .mceMiddle .mceRight{background:#f1f1f1;border-right:1px solid #999;}.wp-admin .clearlooks2 .mceBottom{background:#f1f1f1;border-bottom:1px solid #999;}.wp-admin .clearlooks2 .mceBottom .mceLeft{background:#f1f1f1;border-bottom:1px solid #999;border-left:1px solid #999;}.wp-admin .clearlooks2 .mceBottom .mceCenter{background:#f1f1f1;border-bottom:1px solid #999;}.wp-admin .clearlooks2 .mceBottom .mceRight{background:#f1f1f1;border-bottom:1px solid #999;border-right:1px solid #999;}.wp-admin .clearlooks2 .mceFocus .mceTop span{color:#e5e5e5;}#editorcontainer,#post-status-info,#titlediv #title,.editwidget .widget-inside{border-color:#D1E5EE;}#titlediv #title{background-color:#fff;}#tTips p#tTips_inside{background-color:#ddd;color:#333;}#timestampdiv input,#namediv input,#poststuff .inside .the-tagcloud{border-color:#ddd;}#adminmenu *{border-color:#d1e5ee;}#adminmenu li.wp-menu-separator{background:transparent url(../images/menu-arrows.gif) no-repeat scroll left 5px;}.folded #adminmenu li.wp-menu-separator{background:transparent url(../images/menu-arrows.gif) no-repeat scroll right -34px;}#adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle,#adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle{background:transparent url(../images/menu-bits-vs.gif?ver=20101102) no-repeat scroll left -207px;}#adminmenu .wp-has-submenu:hover .wp-menu-toggle,#adminmenu .wp-menu-open .wp-menu-toggle{background:transparent url(../images/menu-bits-vs.gif?ver=20101102) no-repeat scroll left -109px;}#adminmenu a.menu-top{background:#eff8ff url(../images/menu-bits-vs.gif?ver=20101102) repeat-x scroll left -379px;}#adminmenu .wp-submenu a{background:#fff url(../images/menu-bits-vs.gif?ver=20101102) no-repeat scroll 0 -99px;}#adminmenu .wp-has-current-submenu ul li a{background:none;}#adminmenu .wp-has-current-submenu ul li a.current{background:url(../images/menu-dark-vs.gif) top left no-repeat!important;}.wp-has-current-submenu .wp-submenu{border-top:none!important;}#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu{border-bottom:#aaa 1px solid;}#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,#adminmenu li.current a.menu-top{background:#d0dfe9 url(../images/menu-bits-vs.gif?ver=20101102) top left repeat-x;border:#5589aa 1px solid;color:#464646;}#adminmenu li.wp-has-current-submenu .wp-submenu,#adminmenu li.wp-has-current-submenu ul li a{border-right-color:#5589aa!important;border-left-color:#5589aa!important;}#adminmenu li.wp-has-current-submenu ul li a{background:url(../images/menu-dark-vs.gif) bottom left no-repeat!important;}#adminmenu li.wp-has-current-submenu ul{border-bottom-color:#5589aa;}#adminmenu .wp-submenu .current a.current{background:transparent url(../images/menu-bits-vs.gif?ver=20101102) no-repeat scroll 0 -289px;}#adminmenu .wp-submenu a:hover{background-color:#f8f7f3!important;color:#333!important;}#adminmenu .wp-submenu li.current,#adminmenu .wp-submenu li.current a,#adminmenu .wp-submenu li.current a:hover{color:#333;background-color:#efede7;background-image:none;border-color:#5589aa;}#adminmenu .wp-submenu ul{background-color:#fff;}.folded #adminmenu li.menu-top,#adminmenu .wp-submenu .wp-submenu-head{background:#eff8ff url(../images/menu-bits-vs.gif?ver=20101102) repeat-x scroll left -379px;}.folded #adminmenu li.wp-has-current-submenu,.folded #adminmenu li.menu-top.current{background:#e0e0e0 url(../images/menu-bits-vs.gif?ver=20101102) top left repeat-x;border:#5589aa 1px solid;color:#464646;}#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head{background:#d0dfe9 url(../images/menu-bits-vs.gif?ver=20101102) repeat-x 0 0;border:1px solid;color:#464646;}#adminmenu div.wp-submenu{background-color:transparent;}#adminmenu .menu-icon-dashboard div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -61px -33px;}#adminmenu .menu-icon-dashboard:hover div.wp-menu-image,#adminmenu .menu-icon-dashboard.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-dashboard.current div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -61px -1px;}#adminmenu .menu-icon-post div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -272px -33px;}#adminmenu .menu-icon-post:hover div.wp-menu-image,#adminmenu .menu-icon-post.wp-has-current-submenu div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -272px -1px;}#adminmenu .menu-icon-media div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -121px -33px;}#adminmenu .menu-icon-media:hover div.wp-menu-image,#adminmenu .menu-icon-media.wp-has-current-submenu div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -121px -1px;}#adminmenu .menu-icon-links div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -91px -33px;}#adminmenu .menu-icon-links:hover div.wp-menu-image,#adminmenu .menu-icon-links.wp-has-current-submenu div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -91px -1px;}#adminmenu .menu-icon-page div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -151px -33px;}#adminmenu .menu-icon-page:hover div.wp-menu-image,#adminmenu .menu-icon-page.wp-has-current-submenu div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -151px -1px;}#adminmenu .menu-icon-comments div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -31px -33px;}#adminmenu .menu-icon-comments:hover div.wp-menu-image,#adminmenu .menu-icon-comments.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-comments.current div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -31px -1px;}#adminmenu .menu-icon-appearance div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -1px -33px;}#adminmenu .menu-icon-appearance:hover div.wp-menu-image,#adminmenu .menu-icon-appearance.wp-has-current-submenu div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -1px -1px;}#adminmenu .menu-icon-plugins div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -181px -33px;}#adminmenu .menu-icon-plugins:hover div.wp-menu-image,#adminmenu .menu-icon-plugins.wp-has-current-submenu div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -181px -1px;}#adminmenu .menu-icon-users div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -301px -33px;}#adminmenu .menu-icon-users:hover div.wp-menu-image,#adminmenu .menu-icon-users.wp-has-current-submenu div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -301px -1px;}#adminmenu .menu-icon-tools div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -211px -33px;}#adminmenu .menu-icon-tools:hover div.wp-menu-image,#adminmenu .menu-icon-tools.wp-has-current-submenu div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -211px -1px;}#adminmenu .menu-icon-settings div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -241px -33px;}#adminmenu .menu-icon-settings:hover div.wp-menu-image,#adminmenu .menu-icon-settings.wp-has-current-submenu div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -241px -1px;}#adminmenu .menu-icon-site div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -361px -33px;}#adminmenu .menu-icon-site:hover div.wp-menu-image,#adminmenu .menu-icon-site.wp-has-current-submenu div.wp-menu-image{background:transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -361px -1px;}table.diff .diff-deletedline{background-color:#fdd;}table.diff .diff-deletedline del{background-color:#f99;}table.diff .diff-addedline{background-color:#dfd;}table.diff .diff-addedline ins{background-color:#9f9;}#att-info{background-color:#E4F2FD;}#sidemenu a{background-color:#f9f9f9;border-color:#f9f9f9;border-bottom-color:#dfdfdf;}#sidemenu a.current{background-color:#fff;border-color:#dfdfdf #dfdfdf #fff;color:#D54E21;}#screen-options-wrap,#contextual-help-wrap{background-color:#F8F7F3;border-color:#D1e5ee;}#screen-meta-links a.show-settings{color:#606060;}#screen-meta-links a.show-settings:hover{color:#000;}#replysubmit{background-color:#f1f1f1;border-top-color:#ddd;}#replyerror{border-color:#ddd;background-color:#f9f9f9;}#edithead,#replyhead{background-color:#f1f1f1;}#ed_reply_toolbar{background-color:#e9e9e9;}.vim-current,.vim-current th,.vim-current td{background-color:#E4F2FD!important;}.star-average,.star.star-rating{background-color:#fc0;}div.star.select:hover{background-color:#d00;}#plugin-information .fyi ul{background-color:#eaf3fa;}#plugin-information .fyi h2.mainheader{background-color:#cee1ef;}#plugin-information pre,#plugin-information code{background-color:#ededff;}#plugin-information pre{border:1px solid #ccc;}.inline-edit-row fieldset input[type="text"],.inline-edit-row fieldset textarea,#bulk-titles,#replyrow input{border-color:#ddd;}.inline-editor div.title{background-color:#EAF3FA;}.inline-editor ul.cat-checklist{background-color:#fff;border-color:#ddd;}.inline-editor .categories .catshow,.inline-editor .categories .cathide{color:#21759b;}.inline-editor .quick-edit-save{background-color:#f1f1f1;}#replyrow #ed_reply_toolbar input:hover{border-color:#aaa;background:#ddd;}fieldset.inline-edit-col-right .inline-edit-col{border-color:#dfdfdf;}.attention{color:#D54E21;}body.press-this .postbox:hover .handlediv,body.press-this .stuffbox:hover .handlediv,.meta-box-sortables .postbox:hover .handlediv{background:transparent url(../images/menu-bits-vs.gif?ver=20101102) no-repeat scroll left -111px;}#major-publishing-actions{background:#eaf2fa;}.tablenav .tablenav-pages{color:#555;}.tablenav .tablenav-pages a{border-color:#d1e5ee;background:#eee url('../images/menu-bits-vs.gif?ver=20101102') repeat-x scroll left -379px;}.tablenav .tablenav-pages a:hover,.tablenav .tablenav-pages a:focus{color:#d54e21;}.tablenav .tablenav-pages a.disabled,.tablenav .tablenav-pages a.disabled:hover,.tablenav .tablenav-pages a.disabled:focus{color:#aaa;}.tablenav .tablenav-pages .current{background:#dfdfdf;border-color:#d3d3d3;}#availablethemes,#availablethemes td{border-color:#ddd;}#current-theme img{border-color:#999;}#TB_window #TB_title a.tb-theme-preview-link,#TB_window #TB_title a.tb-theme-preview-link:visited{color:#999;}#TB_window #TB_title a.tb-theme-preview-link:hover,#TB_window #TB_title a.tb-theme-preview-link:focus{color:#ccc;}.misc-pub-section{border-bottom-color:#eee;}#minor-publishing{border-bottom-color:#ddd;}#post-body .misc-pub-section{border-right-color:#eee;}.post-com-count span{background-color:#bbb;}.form-table .color-palette td{border-color:#fff;}.sortable-placeholder{border-color:#bbb;background-color:#f5f5f5;}#post-body ul.category-tabs li.tabs a,#post-body ul.add-menu-item-tabs li.tabs a,body.press-this ul.category-tabs li.tabs a{color:#333;}#wp_editimgbtn,#wp_delimgbtn,#wp_editgallery,#wp_delgallery{border-color:#999;background-color:#eee;}#wp_editimgbtn:hover,#wp_delimgbtn:hover,#wp_editgallery:hover,#wp_delgallery:hover{border-color:#555;background-color:#ccc;}#favorite-first{border-color:#c0c0c0;background:#f1f1f1;background:-moz-linear-gradient(bottom,#e7e7e7,#fff);background:-webkit-gradient(linear,left bottom,left top,from(#e7e7e7),to(#fff));}#favorite-inside{border-color:#c0c0c0;background-color:#fff;}#favorite-toggle{background:transparent url(../images/fav-arrow.gif?ver=20100531) no-repeat 0 -4px;}#favorite-actions a{color:#464646;}#favorite-actions a:hover{color:#000;}#favorite-inside a:hover{text-decoration:underline;}#screen-meta .screen-meta-toggle{background:#D1E5ee;}#screen-meta a.show-settings,.toggle-arrow{background-image:url("../images/screen-options-toggle-vs.gif?ver=20100531");}#icon-edit,#icon-post{background:transparent url(../images/icons32-vs.png?ver=20100531) no-repeat -552px -5px;}#icon-index{background:transparent url(../images/icons32-vs.png?ver=20100531) no-repeat -137px -5px;}#icon-upload{background:transparent url(../images/icons32-vs.png?ver=20100531) no-repeat -251px -5px;}#icon-link-manager,#icon-link,#icon-link-category{background:transparent url(../images/icons32-vs.png?ver=20100531) no-repeat -190px -5px;}#icon-edit-pages,#icon-page{background:transparent url(../images/icons32-vs.png?ver=20100531) no-repeat -312px -5px;}#icon-edit-comments{background:transparent url(../images/icons32-vs.png?ver=20100531) no-repeat -72px -5px;}#icon-themes{background:transparent url(../images/icons32-vs.png?ver=20100531) no-repeat -11px -5px;}#icon-plugins{background:transparent url(../images/icons32-vs.png?ver=20100531) no-repeat -370px -5px;}#icon-users,#icon-profile,#icon-user-edit{background:transparent url(../images/icons32-vs.png?ver=20100531) no-repeat -600px -5px;}#icon-tools,#icon-admin{background:transparent url(../images/icons32-vs.png?ver=20100531) no-repeat -432px -5px;}#icon-options-general{background:transparent url(../images/icons32-vs.png?ver=20100531) no-repeat -492px -5px;}#icon-ms-admin{background:transparent url(../images/icons32-vs.png?ver=20100531) no-repeat -659px -5px;}.view-switch #view-switch-list{background:transparent url(../images/list.png) no-repeat 0 0;}.view-switch .current #view-switch-list{background:transparent url(../images/list.png) no-repeat -40px 0;}.view-switch #view-switch-excerpt{background:transparent url(../images/list.png) no-repeat -20px 0;}.view-switch .current #view-switch-excerpt{background:transparent url(../images/list.png) no-repeat -60px 0;}#header-logo{background:transparent url(../images/wp-logo-vs.png?ver=20101102) no-repeat scroll center center;}.popular-tags,.feature-filter{background-color:#fff;border-color:#DFDFDF;}#theme-information .action-button{border-top-color:#DFDFDF;}.theme-listing br.line{border-bottom-color:#ccc;}div.widgets-sortables,#widgets-left .inactive{border-color:#D1E5EE;background-color:#f8f7f3;-moz-border-radius-bottomleft:8px;-moz-border-radius-bottomright:8px;}#available-widgets .widget-holder{background-color:#fff;border-color:#ddd;}#widgets-left .sidebar-name{background-color:#aaa;background-image:url(../images/ed-bg-vs.gif?ver=20101102);text-shadow:#fff 0 1px 0;border-color:#dfdfdf;}#widgets-right .sidebar-name{background-image:url(../images/button-grad.png);text-shadow:#174f69 0 -1px 0;background-color:#cfdfe9;border-color:#174f69;color:#fff;}.sidebar-name:hover,#removing-widget{color:#d54e21;}#removing-widget span{color:black;}#widgets-left .sidebar-name-arrow{background:transparent url(../images/menu-bits-vs.gif?ver=20101102) no-repeat scroll left -109px;}#widgets-right .sidebar-name-arrow{background:url("../images/widgets-arrow-vs.gif?ver=20100531") no-repeat scroll 0 -1px transparent;}.in-widget-title{color:#606060;}.deleting .widget-title *{color:#aaa;}.imgedit-menu div{border-color:#d5d5d5;background-color:#f1f1f1;}.imgedit-menu div:hover{border-color:#c1c1c1;background-color:#eaeaea;}.imgedit-menu div.disabled{border-color:#ccc;background-color:#ddd;filter:alpha(opacity=50);opacity:.5;}#dashboard_recent_comments div.undo{border-top-color:#dfdfdf;}.comment-ays,.comment-ays th{border-color:#ddd;}.comment-ays th{background-color:#f1f1f1;}#nav-menu-header,#nav-menu-footer,.menu-item-handle{background:url("../images/ed-bg-vs.gif?ver=20101102") repeat-x scroll left top #cfdfe9;border-top:solid #D1E5EE 1px;}#menu-management .nav-tab-active{background:#eff8ff;border-bottom-color:#eff8ff;}wp-admin/css/colors-classic-rtl.dev.css0000644002347300047320000000511311656660272017731 0ustar vonfabpsacln.bar { border-right-color: transparent; border-left-color: #99d; } .plugins .togl { border-right-color: transparent; border-left-color: #ccc; } .post-com-count { background-image: url(../images/bubble_bg-rtl.gif); } .tablenav .tablenav-pages a { background: #eee url(../images/menu-bits-rtl-vs.gif?ver=20101117) repeat-x scroll right -379px; } #upload-menu li.current { border-right-color: transparent; border-left-color: #448abd; } #adminmenu .wp-submenu .current a.current { background: transparent url(../images/menu-bits-rtl-vs.gif?ver=20101117) no-repeat scroll right -289px; } #adminmenu li.wp-menu-separator { background: transparent url(../images/menu-arrows.gif) no-repeat scroll right -34px; } .folded #adminmenu li.wp-menu-separator { background: transparent url(../images/menu-arrows.gif) no-repeat scroll left 5px; } #adminmenu li.wp-has-current-submenu .wp-menu-toggle, #adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle { background: transparent url(../images/menu-bits-rtl-vs.gif?ver=20101117) repeat-x scroll right -207px; } #adminmenu .wp-has-current-submenu ul li a.current { background: url(../images/menu-dark-rtl-vs.gif) top right no-repeat !important; } #adminmenu li.wp-has-current-submenu a.wp-has-current-submenu, #adminmenu .menu-top .current { background: url(../images/menu-bits-rtl-vs.gif?ver=20101117) top right repeat-x; } #adminmenu li.wp-has-current-submenu ul li a { background: url(../images/menu-dark-rtl-vs.gif) bottom right no-repeat !important; } #adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle, #adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle { background: transparent url(../images/menu-bits-rtl-vs.gif?ver=20101117) no-repeat right -207px; } #adminmenu .wp-has-submenu:hover .wp-menu-toggle, #adminmenu .wp-menu-open .wp-menu-toggle { background: transparent url(../images/menu-bits-rtl-vs.gif?ver=20101117) repeat-x scroll right -109px; } #adminmenu a.wp-has-submenu { background: #eff8ff url(../images/menu-bits-rtl-vs.gif?ver=20101117) repeat-x scroll right -379px; } #adminmenu .wp-submenu a { background: #fff url(../images/menu-bits-rtl-vs.gif?ver=20101117) no-repeat scroll right -99px; } #adminmenu li.wp-has-current-submenu a.wp-has-submenu { background: #b5b5b5 url(../images/menu-bits-rtl-vs.gif?ver=20101117) repeat-x scroll right top; } .meta-box-sortables .postbox:hover .handlediv { background: transparent url(../images/menu-bits-rtl-vs.gif?ver=20101117) no-repeat scroll right -111px; } #favorite-toggle { background: transparent url(../images/fav-arrow-rtl.gif?ver=20100531) no-repeat right -4px; } wp-admin/css/colors-classic.dev.css0000644002347300047320000010334411656660273017140 0ustar vonfabpsaclnhtml, .wp-dialog { background-color: #fcfcfb; } * html input, * html .widget { border-color: #dfdfdf; } textarea, input[type="text"], input[type="password"], input[type="file"], input[type="button"], input[type="submit"], input[type="reset"], select { border-color: #dfdfdf; background-color: #fff; } kbd, code { background: #eaeaea; } input[readonly] { background-color: #eee; } .find-box-search { border-color: #dfdfdf; background-color: #f1f1f1; } .find-box { background-color: #f1f1f1; } .find-box-inside { background-color: #fff; } a.page-numbers:hover { border-color: #999; } body, #wpbody, .form-table .pre { color: #174f69; } body > #upload-menu { border-bottom-color: #fff; } #postcustomstuff table, #your-profile fieldset, #rightnow, div.dashboard-widget, #dashboard-widgets p.dashboard-widget-links, #replyrow #ed_reply_toolbar input { border-color: #D1E5EE } #poststuff .inside label.spam, #poststuff .inside label.deleted { color: red; } #poststuff .inside label.waiting { color: orange; } #poststuff .inside label.approved { color: green; } #postcustomstuff table { border-color: #dfdfdf; background-color: #F9F9F9; } #postcustomstuff thead th { background-color: #F1F1F1; } #postcustomstuff table input, #postcustomstuff table textarea { border-color: #dfdfdf; background-color: #fff; } .widefat { border-color: #D1E5EE; background-color: #fff; } div.dashboard-widget-error { background-color: #c43; } div.dashboard-widget-notice { background-color: #cfe1ef; } div.dashboard-widget-submit { border-top-color: #ccc; } div.tabs-panel, .wp-tab-panel, ul.category-tabs li.tabs, ul.add-menu-item-tabs li.tabs, .wp-tab-active { border-color: #dfdfdf; } ul.category-tabs li.tabs, ul.add-menu-item-tabs li.tabs, .wp-tab-active { background-color: #f1f1f1; } input.disabled, textarea.disabled { background-color: #ccc; } /* #upload-menu li a.upload-tab-link, */ #plugin-information .action-button a, #plugin-information .action-button a:hover, #plugin-information .action-button a:visited { color: #fff; } .widget .widget-top, .postbox h3, .stuffbox h3 { background: #cfdfe9 url("../images/blue-grad.png?ver=20101102") repeat-x left top; text-shadow: #fff 0 1px 0; } .form-table th, .form-wrap label { color: #222; text-shadow: #fff 0 1px 0; } .description, .form-wrap p { color: #666; } strong .post-com-count span { background-color: #21759b; } .sorthelper { background-color: #ccf3fa; } .ac_match, .subsubsub a.current { color: #000; } .wrap h2 { color: #174f69; } .ac_over { background-color: #f0f0b8; } .ac_results { background-color: #fff; border-color: #808080; } .ac_results li { color: #101010; } .alternate, .alt { background-color: #F8F7F3; } .available-theme a.screenshot { background-color: #f1f1f1; border-color: #ddd; } .bar { background-color: #e8e8e8; border-right-color: #99d; } #media-upload, #media-upload .media-item .slidetoggle { background: #fff; } #media-upload .slidetoggle { border-top-color: #dfdfdf; } div.error, .login #login_error { background-color: #ffebe8; border-color: #c00; } div.error a { color: #c00; } .form-invalid { background-color: #ffebe8 !important; } .form-invalid input, .form-invalid select { border-color: #c00 !important; } .submit { border-color: #DFDFDF; } .highlight { background-color: #e4f2fd; color: #000; } .howto, .nonessential, #edit-slug-box, .form-input-tip, .rss-widget span.rss-date, .subsubsub { color: #666; } .media-item { border-bottom-color: #dfdfdf; } #wpbody-content #media-items .describe { border-top-color: #dfdfdf; } .media-upload-form label.form-help, td.help { color: #9a9a9a; } .post-com-count { background-image: url(../images/bubble_bg.gif); color: #fff; } .post-com-count span { background-color: #bbb; color: #fff; } .post-com-count:hover span { background-color: #d54e21; } .quicktags, .search { background-color: #ccc; color: #000; } .side-info h5 { border-bottom-color: #dadada; } .side-info ul { color: #666; } .button, .button-secondary, .submit input, input[type=button], input[type=submit] { border-color: #bbb; color: #464646; } .button:hover, .button-secondary:hover, .submit input:hover, input[type=button]:hover, input[type=submit]:hover { color: #000; border-color: #666; } .button, .submit input, .button-secondary { background: #f2f2f2 url(../images/white-grad.png) repeat-x scroll left top; text-shadow: rgba(255,255,255,1) 0 1px 0; } .button:active, .submit input:active, .button-secondary:active { background: #eee url(../images/white-grad-active.png) repeat-x scroll left top; } input.button-primary, button.button-primary, a.button-primary { border-color: #298cba; font-weight: bold; color: #fff; background: #21759B url(../images/button-grad.png) repeat-x scroll left top; text-shadow: rgba(0,0,0,0.3) 0 -1px 0; } input.button-primary:active, button.button-primary:active, a.button-primary:active { background: #21759b url(../images/button-grad-active.png) repeat-x scroll left top; color: #eaf2fa; } input.button-primary:hover, button.button-primary:hover, a.button-primary:hover, a.button-primary:focus, a.button-primary:active { border-color: #13455b; color: #eaf2fa; } .button-disabled, .button[disabled], .button:disabled, .button-secondary[disabled], .button-secondary:disabled, a.button.disabled { color: #aaa !important; border-color: #ddd !important; } .button-primary-disabled, .button-primary[disabled], .button-primary:disabled { color: #9FD0D5 !important; background: #298CBA !important; } a:hover, a:active, a:focus { color: #d54e21; } #wphead #viewsite a:hover, #adminmenu a:hover, #adminmenu ul.wp-submenu a:hover, #the-comment-list .comment a:hover, #rightnow a:hover, #media-upload a.del-link:hover, div.dashboard-widget-submit input:hover, .subsubsub a:hover, .subsubsub a.current:hover, .ui-tabs-nav a:hover, .plugins .inactive a:hover, #all-plugins-table .plugins .inactive a:hover, #search-plugins-table .plugins .inactive a:hover { color: #d54e21; } #the-comment-list .comment-item, #dashboard-widgets #dashboard_quick_press form p.submit { border-color: #dfdfdf; } #side-sortables .category-tabs .tabs a, #side-sortables .add-menu-item-tabs .tabs a, .wp-tab-bar .wp-tab-active a { color: #333; } #rightnow .rbutton { background-color: #ebebeb; color: #264761; } .submitbox .submit { background-color: #464646; color: #ccc; } .plugins a.delete:hover, #all-plugins-table .plugins a.delete:hover, #search-plugins-table .plugins a.delete:hover, .submitbox .submitdelete { color: #f00; border-bottom-color: #f00; } .submitbox .submitdelete:hover, #media-items a.delete:hover { color: #fff; background-color: #f00; border-bottom-color: #f00; } #normal-sortables .submitbox .submitdelete:hover { color: #000; background-color: #f00; border-bottom-color: #f00; } .tablenav .dots { border-color: transparent; } .tablenav .next, .tablenav .prev { border-color: transparent; color: #21759b; } .tablenav .next:hover, .tablenav .prev:hover { border-color: transparent; color: #d54e21; } div.updated, .login .message { background-color: #ffffe0; border-color: #e6db55; } .update-message { color: #000; } a.page-numbers { border-bottom-color: #B8D3E2; } .commentlist li { border-bottom-color: #ccc; } .widefat td, .widefat th { border-color: #dfdfdf; } .widefat th { text-shadow: rgba(255,255,255,0.8) 0 1px 0; } .widefat thead tr th, .widefat tfoot tr th, h3.dashboard-widget-title, h3.dashboard-widget-title span, h3.dashboard-widget-title small, .find-box-head { color: #333; background: #cfdfe9 url(../images/blue-grad.png?ver=20101102) repeat-x scroll left top; } th.sortable a:hover, th.sortable a:active, th.sortable a:focus { color: #333; } h3.dashboard-widget-title small a { color: #d7d7d7; } h3.dashboard-widget-title small a:hover { color: #fff; } a, #adminmenu a, #poststuff #edButtonPreview, #poststuff #edButtonHTML, #the-comment-list p.comment-author strong a, #media-upload a.del-link, #media-items a.delete, .plugins a.delete, .ui-tabs-nav a { color: #21759b; } #adminmenu #awaiting-mod, #adminmenu .update-plugins, #sidemenu a .update-plugins, #rightnow .reallynow { background-color: #464646; color: #fff; -moz-box-shadow: #fff 0 -1px 0; -khtml-box-shadow: #fff 0 -1px 0; -webkit-box-shadow: #fff 0 -1px 0; box-shadow: #fff 0 -1px 0; } #plugin-information .action-button { background-color: #d54e21; color: #fff; } #adminmenu li.current a #awaiting-mod, #adminmenu li a.wp-has-current-submenu .update-plugins{ background-color: #464646; color: #fff; -moz-box-shadow: #fff 0 -1px 0; -khtml-box-shadow: #fff 0 -1px 0; -webkit-box-shadow: #fff 0 -1px 0; box-shadow: #fff 0 -1px 0; } div#media-upload-header, div#plugin-information-header { background-color: #f9f9f9; border-bottom-color: #dfdfdf; } #currenttheme img { border-color: #666; } #dashboard_secondary div.dashboard-widget-content ul li a { background-color: #f9f9f9; } input.readonly, textarea.readonly { background-color: #ddd; } #ed_toolbar input, #ed_reply_toolbar input { background: #fff url("../images/fade-butt.png") repeat-x 0 -2px; } #editable-post-name { background-color: #fffbcc; } #edit-slug-box strong, .tablenav .displaying-num, #submitted-on, .submitted-on { color: #777; } .login #nav a { color: #21759b !important; } .login #nav a:hover { color: #d54e21 !important; } #footer { color: #777; border-color: #b0c8d7; background: #cfdfe9; /* fallback color */ background:-moz-linear-gradient(bottom, #cfdfe9, #eff8ff); background:-webkit-gradient(linear, left bottom, left top, from(#cfdfe9), to(#eff8ff)); } #media-items, .imgedit-group { border-color: #dfdfdf; } .checkbox, .side-info, .plugins tr, #your-profile #rich_editing { background-color: #fff; } .plugins .inactive, .plugins .inactive th, .plugins .inactive td, tr.inactive + tr.plugin-update-tr .plugin-update { background-color: #efede7; } .plugin-update-tr .update-message { background-color: #fffbe4; border-color: #dfdfdf; } .plugins .active, .plugins .active th, .plugins .active td { color: #000; } .plugins .inactive a { color: #557799; } #the-comment-list tr.undo, #the-comment-list div.undo { background-color: #f4f4f4; } #the-comment-list .unapproved { background-color: #ffffe0; } #the-comment-list .approve a { color: #006505; } #the-comment-list .unapprove a { color: #d98500; } table.widefat span.delete a, table.widefat span.trash a, table.widefat span.spam a, #dashboard_recent_comments .delete a, #dashboard_recent_comments .trash a, #dashboard_recent_comments .spam a { color: #bc0b0b; } .widget, #widget-list .widget-top, .postbox, #titlediv, #poststuff .postarea, .stuffbox { border-color: #D1E5EE; } .widget, .postbox { background-color: #fff; } .ui-sortable .postbox h3 { color: #174f69; } .widget .widget-top, .ui-sortable .postbox h3:hover { color: #174f69; } .curtime #timestamp { background-image: url(../images/date-button.gif); } #quicktags #ed_link { color: #00f; } #rightnow .youhave { background-color: #f0f6fb; } #rightnow a { color: #448abd; } .tagchecklist span a, #bulk-titles div a { background: url(../images/xit.gif) no-repeat; } .tagchecklist span a:hover, #bulk-titles div a:hover { background: url(../images/xit.gif) no-repeat -10px 0; } #update-nag, .update-nag { background-color: #FFFBCC; border-color: #E6DB55; color: #555; } .login #backtoblog a { color: #464646; } #wphead { border-bottom:#b0c8d7 1px solid; background: #cfdfe9; /* fallback color */ background:-moz-linear-gradient(bottom, #cfdfe9, #eff8ff); background:-webkit-gradient(linear, left bottom, left top, from(#cfdfe9), to(#eff8ff)); } #wphead h1 a { color: #174f69; } #user_info { color: #777; } #user_info a:link, #user_info a:visited, #footer a:link, #footer a:visited { color: #174f69; text-decoration: none; } #user_info a:hover, #footer a:hover { color: #000; text-decoration: underline !important; } div#media-upload-error, .file-error, abbr.required, .widget-control-remove:hover, table.widefat .delete a:hover, table.widefat .trash a:hover, table.widefat .spam a:hover, #dashboard_recent_comments .delete a:hover, #dashboard_recent_comments .trash a:hover #dashboard_recent_comments .spam a:hover { color: #f00; } #pass-strength-result { background-color: #eee; border-color: #ddd !important; } #pass-strength-result.bad { background-color: #ffb78c; border-color: #ff853c !important; } #pass-strength-result.good { background-color: #ffec8b; border-color: #fc0 !important; } #pass-strength-result.short { background-color: #ffa0a0; border-color: #f04040 !important; } #pass-strength-result.strong { background-color: #c3ff88; border-color: #8dff1c !important; } /* editors */ #quicktags { border-color: #cfdfe9; background-color: #cfdfe9; background-image: url("../images/ed-bg-vs.gif?ver=20101102"); } #ed_toolbar input { border-color: #C3C3C3; } #ed_toolbar input:hover { border-color: #aaa; background: #ddd; } #poststuff .wp_themeSkin .mceStatusbar { border-color: #EDEDED; } #poststuff #edButtonPreview, #poststuff #edButtonHTML { background-color: #eff8ff; border-color: #D1E5EE; color: #999; } #poststuff #editor-toolbar .active { border-bottom-color: #eff8ff; background-color: #eff8ff; color: #333; } /* TinyMCE */ #post-status-info { background-color: #eff8ff; } .wp_themeSkin *, .wp_themeSkin a:hover, .wp_themeSkin a:link, .wp_themeSkin a:visited, .wp_themeSkin a:active { color: #000; } /* Containers */ .wp_themeSkin iframe { background: #fff; } /* Layout */ .wp_themeSkin .mceStatusbar { color: #000; background-color: #f5f5f5; } /* Button */ .wp_themeSkin .mceButton { background-color: #e9e8e8; border-color: #B2B2B2; } .wp_themeSkin a.mceButtonEnabled:hover, .wp_themeSkin a.mceButtonActive, .wp_themeSkin a.mceButtonSelected { background: #d5d5d5; border-color: #777 !important; } .wp_themeSkin .mceButtonDisabled { border-color: #ccc !important; } /* ListBox */ .wp_themeSkin .mceListBox .mceText, .wp_themeSkin .mceListBox .mceOpen { border-color: #B2B2B2; background-color: #d5d5d5; } .wp_themeSkin table.mceListBoxEnabled:hover .mceOpen, .wp_themeSkin .mceListBoxHover .mceOpen, .wp_themeSkin .mceListBoxSelected .mceOpen, .wp_themeSkin .mceListBoxSelected .mceText { border-color: #777 !important; background-color: #d5d5d5; } .wp_themeSkin table.mceListBoxEnabled:hover .mceText, .wp_themeSkin .mceListBoxHover .mceText { border-color: #777 !important; } .wp_themeSkin select.mceListBox { border-color: #B2B2B2; background-color: #fff; } /* SplitButton */ .wp_themeSkin .mceSplitButton a.mceAction, .wp_themeSkin .mceSplitButton a.mceOpen { border-color: #B2B2B2; } .wp_themeSkin .mceSplitButton a.mceOpen:hover, .wp_themeSkin .mceSplitButtonSelected a.mceOpen, .wp_themeSkin table.mceSplitButtonEnabled:hover a.mceAction, .wp_themeSkin .mceSplitButton a.mceAction:hover { background-color: #d5d5d5; border-color: #777 !important; } .wp_themeSkin .mceSplitButtonActive { background-color: #B2B2B2; } /* ColorSplitButton */ .wp_themeSkin div.mceColorSplitMenu table { background-color: #ebebeb; border-color: #B2B2B2; } .wp_themeSkin .mceColorSplitMenu a { border-color: #B2B2B2; } .wp_themeSkin .mceColorSplitMenu a.mceMoreColors { border-color: #fff; } .wp_themeSkin .mceColorSplitMenu a.mceMoreColors:hover { border-color: #0A246A; background-color: #B6BDD2; } .wp_themeSkin a.mceMoreColors:hover { border-color: #0A246A; } /* Menu */ .wp_themeSkin .mceMenu { border-color: #ddd; } .wp_themeSkin .mceMenu table { background-color: #ebeaeb; } .wp_themeSkin .mceMenu .mceText { color: #000; } .wp_themeSkin .mceMenu .mceMenuItemEnabled a:hover, .wp_themeSkin .mceMenu .mceMenuItemActive { background-color: #f5f5f5; } .wp_themeSkin td.mceMenuItemSeparator { background-color: #aaa; } .wp_themeSkin .mceMenuItemTitle a { background-color: #ccc; border-bottom-color: #aaa; } .wp_themeSkin .mceMenuItemTitle span.mceText { color: #000; } .wp_themeSkin .mceMenuItemDisabled .mceText { color: #888; } .wp_themeSkin tr.mceFirst td.mceToolbar { background: #cfdfe9 url("../images/ed-bg-vs.gif?ver=20101102") repeat-x scroll left top; border-color: #cfdfe9; } .wp-admin #mceModalBlocker { background: #000; } .wp-admin .clearlooks2 .mceFocus .mceTop .mceLeft { background: #444444; border-left: 1px solid #999; border-top: 1px solid #999; -moz-border-radius: 4px 0 0 0; -webkit-border-top-left-radius: 4px; -khtml-border-top-left-radius: 4px; border-top-left-radius: 4px; } .wp-admin .clearlooks2 .mceFocus .mceTop .mceRight { background: #444444; border-right: 1px solid #999; border-top: 1px solid #999; border-top-right-radius: 4px; -khtml-border-top-right-radius: 4px; -webkit-border-top-right-radius: 4px; -moz-border-radius: 0 4px 0 0; } .wp-admin .clearlooks2 .mceMiddle .mceLeft { background: #f1f1f1; border-left: 1px solid #999; } .wp-admin .clearlooks2 .mceMiddle .mceRight { background: #f1f1f1; border-right: 1px solid #999; } .wp-admin .clearlooks2 .mceBottom { background: #f1f1f1; border-bottom: 1px solid #999; } .wp-admin .clearlooks2 .mceBottom .mceLeft { background: #f1f1f1; border-bottom: 1px solid #999; border-left: 1px solid #999; } .wp-admin .clearlooks2 .mceBottom .mceCenter { background: #f1f1f1; border-bottom: 1px solid #999; } .wp-admin .clearlooks2 .mceBottom .mceRight { background: #f1f1f1; border-bottom: 1px solid #999; border-right: 1px solid #999; } .wp-admin .clearlooks2 .mceFocus .mceTop span { color: #e5e5e5; } /* end TinyMCE */ #editorcontainer, #post-status-info, #titlediv #title, .editwidget .widget-inside { border-color: #D1E5EE; } #titlediv #title { background-color: #fff; } #tTips p#tTips_inside { background-color: #ddd; color: #333; } #timestampdiv input, #namediv input, #poststuff .inside .the-tagcloud { border-color: #ddd; } /* menu */ #adminmenu * { border-color: #d1e5ee; } #adminmenu li.wp-menu-separator { background: transparent url(../images/menu-arrows.gif) no-repeat scroll left 5px; } .folded #adminmenu li.wp-menu-separator { background: transparent url(../images/menu-arrows.gif) no-repeat scroll right -34px; } #adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle, #adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle { background: transparent url(../images/menu-bits-vs.gif?ver=20101102) no-repeat scroll left -207px; } #adminmenu .wp-has-submenu:hover .wp-menu-toggle, #adminmenu .wp-menu-open .wp-menu-toggle { background: transparent url(../images/menu-bits-vs.gif?ver=20101102) no-repeat scroll left -109px; } #adminmenu a.menu-top { background: #eff8ff url(../images/menu-bits-vs.gif?ver=20101102) repeat-x scroll left -379px; } #adminmenu .wp-submenu a { background: #fff url(../images/menu-bits-vs.gif?ver=20101102) no-repeat scroll 0 -99px; } #adminmenu .wp-has-current-submenu ul li a { background: none; } #adminmenu .wp-has-current-submenu ul li a.current { background: url(../images/menu-dark-vs.gif) top left no-repeat !important; } .wp-has-current-submenu .wp-submenu { border-top: none !important; } #adminmenu li.wp-has-current-submenu a.wp-has-current-submenu { border-bottom: #aaa 1px solid; } #adminmenu li.wp-has-current-submenu a.wp-has-current-submenu, #adminmenu li.current a.menu-top { background: #d0dfe9 url(../images/menu-bits-vs.gif?ver=20101102) top left repeat-x; border: #5589aa 1px solid; color: #464646; } #adminmenu li.wp-has-current-submenu .wp-submenu, #adminmenu li.wp-has-current-submenu ul li a { border-right-color: #5589aa !important; border-left-color: #5589aa !important; } #adminmenu li.wp-has-current-submenu ul li a { background: url(../images/menu-dark-vs.gif) bottom left no-repeat !important; } #adminmenu li.wp-has-current-submenu ul { border-bottom-color: #5589aa; } #adminmenu .wp-submenu .current a.current { background: transparent url(../images/menu-bits-vs.gif?ver=20101102) no-repeat scroll 0 -289px; } #adminmenu .wp-submenu a:hover { background-color: #f8f7f3 !important; color: #333 !important; } #adminmenu .wp-submenu li.current, #adminmenu .wp-submenu li.current a, #adminmenu .wp-submenu li.current a:hover { color: #333; background-color: #efede7; background-image: none; border-color: #5589aa; } #adminmenu .wp-submenu ul { background-color: #fff; } .folded #adminmenu li.menu-top, #adminmenu .wp-submenu .wp-submenu-head { background: #eff8ff url(../images/menu-bits-vs.gif?ver=20101102) repeat-x scroll left -379px; } .folded #adminmenu li.wp-has-current-submenu, .folded #adminmenu li.menu-top.current { background: #e0e0e0 url(../images/menu-bits-vs.gif?ver=20101102) top left repeat-x; border: #5589aa 1px solid; color: #464646; } #adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head { background: #d0dfe9 url(../images/menu-bits-vs.gif?ver=20101102) repeat-x 0% 0%; border: 1px solid; color: #464646; } #adminmenu div.wp-submenu { background-color: transparent; } /* menu icons */ #adminmenu .menu-icon-dashboard div.wp-menu-image { background: transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -61px -33px; } #adminmenu .menu-icon-dashboard:hover div.wp-menu-image, #adminmenu .menu-icon-dashboard.wp-has-current-submenu div.wp-menu-image, #adminmenu .menu-icon-dashboard.current div.wp-menu-image { background: transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -61px -1px; } #adminmenu .menu-icon-post div.wp-menu-image { background: transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -272px -33px; } #adminmenu .menu-icon-post:hover div.wp-menu-image, #adminmenu .menu-icon-post.wp-has-current-submenu div.wp-menu-image { background: transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -272px -1px; } #adminmenu .menu-icon-media div.wp-menu-image { background: transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -121px -33px; } #adminmenu .menu-icon-media:hover div.wp-menu-image, #adminmenu .menu-icon-media.wp-has-current-submenu div.wp-menu-image { background: transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -121px -1px; } #adminmenu .menu-icon-links div.wp-menu-image { background: transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -91px -33px; } #adminmenu .menu-icon-links:hover div.wp-menu-image, #adminmenu .menu-icon-links.wp-has-current-submenu div.wp-menu-image { background: transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -91px -1px; } #adminmenu .menu-icon-page div.wp-menu-image { background: transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -151px -33px; } #adminmenu .menu-icon-page:hover div.wp-menu-image, #adminmenu .menu-icon-page.wp-has-current-submenu div.wp-menu-image { background: transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -151px -1px; } #adminmenu .menu-icon-comments div.wp-menu-image { background: transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -31px -33px; } #adminmenu .menu-icon-comments:hover div.wp-menu-image, #adminmenu .menu-icon-comments.wp-has-current-submenu div.wp-menu-image, #adminmenu .menu-icon-comments.current div.wp-menu-image { background: transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -31px -1px; } #adminmenu .menu-icon-appearance div.wp-menu-image { background: transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -1px -33px; } #adminmenu .menu-icon-appearance:hover div.wp-menu-image, #adminmenu .menu-icon-appearance.wp-has-current-submenu div.wp-menu-image { background: transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -1px -1px; } #adminmenu .menu-icon-plugins div.wp-menu-image { background: transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -181px -33px; } #adminmenu .menu-icon-plugins:hover div.wp-menu-image, #adminmenu .menu-icon-plugins.wp-has-current-submenu div.wp-menu-image { background: transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -181px -1px; } #adminmenu .menu-icon-users div.wp-menu-image { background: transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -301px -33px; } #adminmenu .menu-icon-users:hover div.wp-menu-image, #adminmenu .menu-icon-users.wp-has-current-submenu div.wp-menu-image { background: transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -301px -1px; } #adminmenu .menu-icon-tools div.wp-menu-image { background: transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -211px -33px; } #adminmenu .menu-icon-tools:hover div.wp-menu-image, #adminmenu .menu-icon-tools.wp-has-current-submenu div.wp-menu-image { background: transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -211px -1px; } #adminmenu .menu-icon-settings div.wp-menu-image { background: transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -241px -33px; } #adminmenu .menu-icon-settings:hover div.wp-menu-image, #adminmenu .menu-icon-settings.wp-has-current-submenu div.wp-menu-image { background: transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -241px -1px; } #adminmenu .menu-icon-site div.wp-menu-image { background: transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -361px -33px; } #adminmenu .menu-icon-site:hover div.wp-menu-image, #adminmenu .menu-icon-site.wp-has-current-submenu div.wp-menu-image { background: transparent url('../images/menu-vs.png?ver=20100531') no-repeat scroll -361px -1px; } /* end menu */ /* Diff */ table.diff .diff-deletedline { background-color: #fdd; } table.diff .diff-deletedline del { background-color: #f99; } table.diff .diff-addedline { background-color: #dfd; } table.diff .diff-addedline ins { background-color: #9f9; } #att-info { background-color: #E4F2FD; } /* edit image */ #sidemenu a { background-color: #f9f9f9; border-color: #f9f9f9; border-bottom-color: #dfdfdf; } #sidemenu a.current { background-color: #fff; border-color: #dfdfdf #dfdfdf #fff; color: #D54E21; } #screen-options-wrap, #contextual-help-wrap { background-color: #F8F7F3; border-color: #D1e5ee; } #screen-meta-links a.show-settings { color: #606060; } #screen-meta-links a.show-settings:hover { color: #000; } #replysubmit { background-color: #f1f1f1; border-top-color: #ddd; } #replyerror { border-color: #ddd; background-color: #f9f9f9; } #edithead, #replyhead { background-color: #f1f1f1; } #ed_reply_toolbar { background-color: #e9e9e9; } /* table vim shortcuts */ .vim-current, .vim-current th, .vim-current td { background-color: #E4F2FD !important; } /* Install Plugins */ .star-average, .star.star-rating { background-color: #fc0; } div.star.select:hover { background-color: #d00; } #plugin-information .fyi ul { background-color: #eaf3fa; } #plugin-information .fyi h2.mainheader { background-color: #cee1ef; } #plugin-information pre, #plugin-information code { background-color: #ededff; } #plugin-information pre { border: 1px solid #ccc; } /* inline editor */ .inline-edit-row fieldset input[type="text"], .inline-edit-row fieldset textarea, #bulk-titles, #replyrow input { border-color: #ddd; } .inline-editor div.title { background-color: #EAF3FA; } .inline-editor ul.cat-checklist { background-color: #fff; border-color: #ddd; } .inline-editor .categories .catshow, .inline-editor .categories .cathide { color: #21759b; } .inline-editor .quick-edit-save { background-color: #f1f1f1; } #replyrow #ed_reply_toolbar input:hover { border-color: #aaa; background: #ddd; } fieldset.inline-edit-col-right .inline-edit-col { border-color: #dfdfdf; } .attention { color: #D54E21; } body.press-this .postbox:hover .handlediv, body.press-this .stuffbox:hover .handlediv, .meta-box-sortables .postbox:hover .handlediv { background: transparent url(../images/menu-bits-vs.gif?ver=20101102) no-repeat scroll left -111px; } #major-publishing-actions { background: #eaf2fa; } .tablenav .tablenav-pages { color: #555; } .tablenav .tablenav-pages a { border-color: #d1e5ee; background: #eee url('../images/menu-bits-vs.gif?ver=20101102') repeat-x scroll left -379px; } .tablenav .tablenav-pages a:hover, .tablenav .tablenav-pages a:focus { color: #d54e21; } .tablenav .tablenav-pages a.disabled, .tablenav .tablenav-pages a.disabled:hover, .tablenav .tablenav-pages a.disabled:focus { color: #aaa; } .tablenav .tablenav-pages .current { background: #dfdfdf; border-color: #d3d3d3; } #availablethemes, #availablethemes td { border-color: #ddd; } #current-theme img { border-color: #999; } #TB_window #TB_title a.tb-theme-preview-link, #TB_window #TB_title a.tb-theme-preview-link:visited { color: #999; } #TB_window #TB_title a.tb-theme-preview-link:hover, #TB_window #TB_title a.tb-theme-preview-link:focus { color: #ccc; } .misc-pub-section { border-bottom-color: #eee; } #minor-publishing { border-bottom-color: #ddd; } #post-body .misc-pub-section { border-right-color: #eee; } .post-com-count span { background-color: #bbb; } .form-table .color-palette td { border-color: #fff; } .sortable-placeholder { border-color: #bbb; background-color: #f5f5f5; } #post-body ul.category-tabs li.tabs a, #post-body ul.add-menu-item-tabs li.tabs a, body.press-this ul.category-tabs li.tabs a { color: #333; } #wp_editimgbtn, #wp_delimgbtn, #wp_editgallery, #wp_delgallery { border-color: #999; background-color: #eee; } #wp_editimgbtn:hover, #wp_delimgbtn:hover, #wp_editgallery:hover, #wp_delgallery:hover { border-color: #555; background-color: #ccc; } #favorite-first { border-color: #c0c0c0; background: #f1f1f1; /* fallback color */ background:-moz-linear-gradient(bottom, #e7e7e7, #fff); background:-webkit-gradient(linear, left bottom, left top, from(#e7e7e7), to(#fff)); } #favorite-inside { border-color: #c0c0c0; background-color: #fff; } #favorite-toggle { background: transparent url(../images/fav-arrow.gif?ver=20100531) no-repeat 0 -4px; } #favorite-actions a { color: #464646; } #favorite-actions a:hover { color: #000; } #favorite-inside a:hover { text-decoration: underline; } #screen-meta .screen-meta-toggle { background: #D1E5ee; } #screen-meta a.show-settings, .toggle-arrow { background-image:url("../images/screen-options-toggle-vs.gif?ver=20100531"); } #icon-edit, #icon-post { background: transparent url(../images/icons32-vs.png?ver=20100531) no-repeat -552px -5px; } #icon-index { background: transparent url(../images/icons32-vs.png?ver=20100531) no-repeat -137px -5px; } #icon-upload { background: transparent url(../images/icons32-vs.png?ver=20100531) no-repeat -251px -5px; } #icon-link-manager, #icon-link, #icon-link-category { background: transparent url(../images/icons32-vs.png?ver=20100531) no-repeat -190px -5px; } #icon-edit-pages, #icon-page { background: transparent url(../images/icons32-vs.png?ver=20100531) no-repeat -312px -5px; } #icon-edit-comments { background: transparent url(../images/icons32-vs.png?ver=20100531) no-repeat -72px -5px; } #icon-themes { background: transparent url(../images/icons32-vs.png?ver=20100531) no-repeat -11px -5px; } #icon-plugins { background: transparent url(../images/icons32-vs.png?ver=20100531) no-repeat -370px -5px; } #icon-users, #icon-profile, #icon-user-edit { background: transparent url(../images/icons32-vs.png?ver=20100531) no-repeat -600px -5px; } #icon-tools, #icon-admin { background: transparent url(../images/icons32-vs.png?ver=20100531) no-repeat -432px -5px; } #icon-options-general { background: transparent url(../images/icons32-vs.png?ver=20100531) no-repeat -492px -5px; } #icon-ms-admin { background: transparent url(../images/icons32-vs.png?ver=20100531) no-repeat -659px -5px; } .view-switch #view-switch-list { background: transparent url(../images/list.png) no-repeat 0 0; } .view-switch .current #view-switch-list { background: transparent url(../images/list.png) no-repeat -40px 0; } .view-switch #view-switch-excerpt { background: transparent url(../images/list.png) no-repeat -20px 0; } .view-switch .current #view-switch-excerpt { background: transparent url(../images/list.png) no-repeat -60px 0; } #header-logo { background: transparent url(../images/wp-logo-vs.png?ver=20101102) no-repeat scroll center center; } .popular-tags, .feature-filter { background-color: #fff; border-color: #DFDFDF; } #theme-information .action-button { border-top-color: #DFDFDF; } .theme-listing br.line { border-bottom-color: #ccc; } div.widgets-sortables, #widgets-left .inactive { border-color: #D1E5EE; background-color: #f8f7f3; -moz-border-radius-bottomleft:8px; -moz-border-radius-bottomright:8px } #available-widgets .widget-holder { background-color: #fff; border-color: #ddd; } #widgets-left .sidebar-name { background-color: #aaa; background-image: url(../images/ed-bg-vs.gif?ver=20101102); text-shadow: #fff 0 1px 0; border-color: #dfdfdf; } #widgets-right .sidebar-name { background-image: url(../images/button-grad.png); text-shadow: #174f69 0 -1px 0; background-color: #cfdfe9; border-color: #174f69; color: #ffffff; } .sidebar-name:hover, #removing-widget { color: #d54e21; } #removing-widget span { color: black; } #widgets-left .sidebar-name-arrow { background: transparent url(../images/menu-bits-vs.gif?ver=20101102) no-repeat scroll left -109px; } #widgets-right .sidebar-name-arrow { background: url("../images/widgets-arrow-vs.gif?ver=20100531") no-repeat scroll 0 -1px transparent; } .in-widget-title { color: #606060; } .deleting .widget-title * { color: #aaa; } .imgedit-menu div { border-color: #d5d5d5; background-color: #f1f1f1; } .imgedit-menu div:hover { border-color: #c1c1c1; background-color: #eaeaea; } .imgedit-menu div.disabled { border-color: #ccc; background-color: #ddd; filter: alpha(opacity=50); opacity: 0.5; } #dashboard_recent_comments div.undo { border-top-color: #dfdfdf; } .comment-ays, .comment-ays th { border-color: #ddd; } .comment-ays th { background-color: #f1f1f1; } #nav-menu-header, #nav-menu-footer, .menu-item-handle { background: url("../images/ed-bg-vs.gif?ver=20101102") repeat-x scroll left top #cfdfe9; border-top: solid #D1E5EE 1px; } #menu-management .nav-tab-active { background: #eff8ff; border-bottom-color: #eff8ff; } wp-admin/css/colors-fresh-rtl.css0000644002347300047320000000463111656660272016646 0ustar vonfabpsacln.bar{border-right-color:transparent;border-left-color:#99d;}.plugins .togl{border-right-color:transparent;border-left-color:#ccc;}.post-com-count{background-image:url(../images/bubble_bg-rtl.gif);}.tablenav .tablenav-pages a{background:#eee url('../images/menu-bits-rtl.gif?ver=20100531') repeat-x scroll right -379px;}#upload-menu li.current{border-right-color:transparent;border-left-color:#448abd;}#adminmenu .wp-submenu .current a.current{background:transparent url(../images/menu-bits-rtl.gif?ver=20100531) no-repeat scroll right -289px;}#adminmenu li.wp-menu-separator{background:transparent url(../images/menu-arrows.gif) no-repeat scroll right -34px;}.folded #adminmenu li.wp-menu-separator{background:transparent url(../images/menu-arrows.gif) no-repeat scroll left 5px;}#adminmenu li.wp-has-current-submenu .wp-menu-toggle,#adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle{background:transparent url(../images/menu-bits-rtl.gif?ver=20100531) repeat-x scroll right -207px;}#adminmenu .wp-has-current-submenu ul li a.current{background:url(../images/menu-dark-rtl.gif) top right no-repeat!important;}#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,#adminmenu .menu-top .current{background:url(../images/menu-bits-rtl.gif?ver=20100531) top right repeat-x;}#adminmenu li.wp-has-current-submenu ul li a{background:url(../images/menu-dark-rtl.gif) bottom right no-repeat!important;}#adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle,#adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle{background:transparent url(../images/menu-bits-rtl.gif?ver=20100531) no-repeat right -207px;}#adminmenu .wp-has-submenu:hover .wp-menu-toggle,#adminmenu .wp-menu-open .wp-menu-toggle{background:transparent url(../images/menu-bits-rtl.gif?ver=20100531) repeat-x scroll right -109px;}#adminmenu a.wp-has-submenu{background:#f1f1f1 url(../images/menu-bits-rtl.gif?ver=20100531) repeat-x scroll right -379px;}#adminmenu .wp-submenu a{background:#fff url(../images/menu-bits-rtl.gif?ver=20100531) no-repeat scroll right -310px;}#adminmenu li.wp-has-current-submenu a.wp-has-submenu{background:#b5b5b5 url(../images/menu-bits-rtl.gif?ver=20100531) repeat-x scroll right top;}.meta-box-sortables .postbox:hover .handlediv{background:transparent url(../images/menu-bits-rtl.gif?ver=20100531) no-repeat scroll right -111px;}#favorite-toggle{background:transparent url(../images/fav-arrow-rtl.gif?ver=20100531) no-repeat right -4px;}wp-admin/css/colors-fresh-rtl.dev.css0000644002347300047320000000505211656660273017422 0ustar vonfabpsacln.bar { border-right-color: transparent; border-left-color: #99d; } .plugins .togl { border-right-color: transparent; border-left-color: #ccc; } .post-com-count { background-image: url(../images/bubble_bg-rtl.gif); } .tablenav .tablenav-pages a { background: #eee url('../images/menu-bits-rtl.gif?ver=20100531') repeat-x scroll right -379px; } #upload-menu li.current { border-right-color: transparent; border-left-color: #448abd; } #adminmenu .wp-submenu .current a.current { background: transparent url(../images/menu-bits-rtl.gif?ver=20100531) no-repeat scroll right -289px; } #adminmenu li.wp-menu-separator { background: transparent url(../images/menu-arrows.gif) no-repeat scroll right -34px; } .folded #adminmenu li.wp-menu-separator { background: transparent url(../images/menu-arrows.gif) no-repeat scroll left 5px; } #adminmenu li.wp-has-current-submenu .wp-menu-toggle, #adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle { background: transparent url(../images/menu-bits-rtl.gif?ver=20100531) repeat-x scroll right -207px; } #adminmenu .wp-has-current-submenu ul li a.current { background: url(../images/menu-dark-rtl.gif) top right no-repeat !important; } #adminmenu li.wp-has-current-submenu a.wp-has-current-submenu, #adminmenu .menu-top .current { background: url(../images/menu-bits-rtl.gif?ver=20100531) top right repeat-x; } #adminmenu li.wp-has-current-submenu ul li a { background: url(../images/menu-dark-rtl.gif) bottom right no-repeat !important; } #adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle, #adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle { background: transparent url(../images/menu-bits-rtl.gif?ver=20100531) no-repeat right -207px; } #adminmenu .wp-has-submenu:hover .wp-menu-toggle, #adminmenu .wp-menu-open .wp-menu-toggle { background: transparent url(../images/menu-bits-rtl.gif?ver=20100531) repeat-x scroll right -109px; } #adminmenu a.wp-has-submenu { background: #f1f1f1 url(../images/menu-bits-rtl.gif?ver=20100531) repeat-x scroll right -379px; } #adminmenu .wp-submenu a { background: #fff url(../images/menu-bits-rtl.gif?ver=20100531) no-repeat scroll right -310px; } #adminmenu li.wp-has-current-submenu a.wp-has-submenu { background: #b5b5b5 url(../images/menu-bits-rtl.gif?ver=20100531) repeat-x scroll right top; } .meta-box-sortables .postbox:hover .handlediv { background: transparent url(../images/menu-bits-rtl.gif?ver=20100531) no-repeat scroll right -111px; } #favorite-toggle { background: transparent url(../images/fav-arrow-rtl.gif?ver=20100531) no-repeat right -4px; } wp-admin/css/colors-fresh.css0000644002347300047320000007322311656660273016053 0ustar vonfabpsaclnhtml,.wp-dialog{background-color:#f9f9f9;}* html input,* html .widget{border-color:#dfdfdf;}textarea,input[type="text"],input[type="password"],input[type="file"],input[type="button"],input[type="submit"],input[type="reset"],select{border-color:#dfdfdf;background-color:#fff;}kbd,code{background:#eaeaea;}input[readonly]{background-color:#eee;}.find-box-search{border-color:#dfdfdf;background-color:#f1f1f1;}.find-box{background-color:#f1f1f1;}.find-box-inside{background-color:#fff;}a.page-numbers:hover{border-color:#999;}body,#wpbody,.form-table .pre{color:#333;}body>#upload-menu{border-bottom-color:#fff;}#postcustomstuff table,#your-profile fieldset,#rightnow,div.dashboard-widget,#dashboard-widgets p.dashboard-widget-links,#replyrow #ed_reply_toolbar input{border-color:#ccc;}#poststuff .inside label.spam,#poststuff .inside label.deleted{color:red;}#poststuff .inside label.waiting{color:orange;}#poststuff .inside label.approved{color:green;}#postcustomstuff table{border-color:#dfdfdf;background-color:#F9F9F9;}#postcustomstuff thead th{background-color:#F1F1F1;}#postcustomstuff table input,#postcustomstuff table textarea{border-color:#dfdfdf;background-color:#fff;}.widefat{border-color:#dfdfdf;background-color:#fff;}div.dashboard-widget-error{background-color:#c43;}div.dashboard-widget-notice{background-color:#cfe1ef;}div.dashboard-widget-submit{border-top-color:#ccc;}div.tabs-panel,.wp-tab-panel,ul.category-tabs li.tabs,ul.add-menu-item-tabs li.tabs,.wp-tab-active{border-color:#dfdfdf;}ul.category-tabs li.tabs,ul.add-menu-item-tabs li.tabs,.wp-tab-active{background-color:#f1f1f1;}input.disabled,textarea.disabled{background-color:#ccc;}#plugin-information .action-button a,#plugin-information .action-button a:hover,#plugin-information .action-button a:visited{color:#fff;}.widget .widget-top,.postbox h3,.stuffbox h3{background:#dfdfdf url("../images/gray-grad.png") repeat-x left top;text-shadow:#fff 0 1px 0;}.form-table th,.form-wrap label{color:#222;text-shadow:#fff 0 1px 0;}.description,.form-wrap p{color:#666;}strong .post-com-count span{background-color:#21759b;}.sorthelper{background-color:#ccf3fa;}.ac_match,.subsubsub a.current{color:#000;}.wrap h2{color:#464646;}.ac_over{background-color:#f0f0b8;}.ac_results{background-color:#fff;border-color:#808080;}.ac_results li{color:#101010;}.alternate,.alt{background-color:#f9f9f9;}.available-theme a.screenshot{background-color:#f1f1f1;border-color:#ddd;}.bar{background-color:#e8e8e8;border-right-color:#99d;}#media-upload,#media-upload .media-item .slidetoggle{background:#fff;}#media-upload .slidetoggle{border-top-color:#dfdfdf;}div.error,.login #login_error{background-color:#ffebe8;border-color:#c00;}div.error a{color:#c00;}.form-invalid{background-color:#ffebe8!important;}.form-invalid input,.form-invalid select{border-color:#c00!important;}.submit{border-color:#DFDFDF;}.highlight{background-color:#e4f2fd;color:#000;}.howto,.nonessential,#edit-slug-box,.form-input-tip,.rss-widget span.rss-date,.subsubsub{color:#666;}.media-item{border-bottom-color:#dfdfdf;}#wpbody-content #media-items .describe{border-top-color:#dfdfdf;}.media-upload-form label.form-help,td.help{color:#9a9a9a;}.post-com-count{background-image:url(../images/bubble_bg.gif);color:#fff;}.post-com-count span{background-color:#bbb;color:#fff;}.post-com-count:hover span{background-color:#d54e21;}.quicktags,.search{background-color:#ccc;color:#000;}.side-info h5{border-bottom-color:#dadada;}.side-info ul{color:#666;}.button,.button-secondary,.submit input,input[type=button],input[type=submit]{border-color:#bbb;color:#464646;}.button:hover,.button-secondary:hover,.submit input:hover,input[type=button]:hover,input[type=submit]:hover{color:#000;border-color:#666;}.button,.submit input,.button-secondary{background:#f2f2f2 url(../images/white-grad.png) repeat-x scroll left top;text-shadow:rgba(255,255,255,1) 0 1px 0;}.button:active,.submit input:active,.button-secondary:active{background:#eee url(../images/white-grad-active.png) repeat-x scroll left top;}input.button-primary,button.button-primary,a.button-primary{border-color:#298cba;font-weight:bold;color:#fff;background:#21759B url(../images/button-grad.png) repeat-x scroll left top;text-shadow:rgba(0,0,0,0.3) 0 -1px 0;}input.button-primary:active,button.button-primary:active,a.button-primary:active{background:#21759b url(../images/button-grad-active.png) repeat-x scroll left top;color:#eaf2fa;}input.button-primary:hover,button.button-primary:hover,a.button-primary:hover,a.button-primary:focus,a.button-primary:active{border-color:#13455b;color:#eaf2fa;}.button-disabled,.button[disabled],.button:disabled,.button-secondary[disabled],.button-secondary:disabled,a.button.disabled{color:#aaa!important;border-color:#ddd!important;}.button-primary-disabled,.button-primary[disabled],.button-primary:disabled{color:#9FD0D5!important;background:#298CBA!important;}a:hover,a:active,a:focus{color:#d54e21;}#wphead #viewsite a:hover,#adminmenu a:hover,#adminmenu ul.wp-submenu a:hover,#the-comment-list .comment a:hover,#rightnow a:hover,#media-upload a.del-link:hover,div.dashboard-widget-submit input:hover,.subsubsub a:hover,.subsubsub a.current:hover,.ui-tabs-nav a:hover,.plugins .inactive a:hover,#all-plugins-table .plugins .inactive a:hover,#search-plugins-table .plugins .inactive a:hover{color:#d54e21;}#the-comment-list .comment-item,#dashboard-widgets #dashboard_quick_press form p.submit{border-color:#dfdfdf;}#side-sortables .category-tabs .tabs a,#side-sortables .add-menu-item-tabs .tabs a,.wp-tab-bar .wp-tab-active a{color:#333;}#rightnow .rbutton{background-color:#ebebeb;color:#264761;}.submitbox .submit{background-color:#464646;color:#ccc;}.plugins a.delete:hover,#all-plugins-table .plugins a.delete:hover,#search-plugins-table .plugins a.delete:hover,.submitbox .submitdelete{color:#f00;border-bottom-color:#f00;}.submitbox .submitdelete:hover,#media-items a.delete:hover{color:#fff;background-color:#f00;border-bottom-color:#f00;}#normal-sortables .submitbox .submitdelete:hover{color:#000;background-color:#f00;border-bottom-color:#f00;}.tablenav .dots{border-color:transparent;}.tablenav .next,.tablenav .prev{border-color:transparent;color:#21759b;}.tablenav .next:hover,.tablenav .prev:hover{border-color:transparent;color:#d54e21;}div.updated,.login .message{background-color:#ffffe0;border-color:#e6db55;}.update-message{color:#000;}a.page-numbers{border-bottom-color:#B8D3E2;}.commentlist li{border-bottom-color:#ccc;}.widefat td,.widefat th{border-color:#dfdfdf;}.widefat th{text-shadow:rgba(255,255,255,0.8) 0 1px 0;}.widefat thead tr th,.widefat tfoot tr th,h3.dashboard-widget-title,h3.dashboard-widget-title span,h3.dashboard-widget-title small,.find-box-head{color:#333;background:#dfdfdf url(../images/gray-grad.png) repeat-x scroll left top;}th.sortable a:hover,th.sortable a:active,th.sortable a:focus{color:#333;}h3.dashboard-widget-title small a{color:#d7d7d7;}h3.dashboard-widget-title small a:hover{color:#fff;}a,#adminmenu a,#poststuff #edButtonPreview,#poststuff #edButtonHTML,#the-comment-list p.comment-author strong a,#media-upload a.del-link,#media-items a.delete,.plugins a.delete,.ui-tabs-nav a{color:#21759b;}#adminmenu #awaiting-mod,#adminmenu .update-plugins,#sidemenu a .update-plugins,#rightnow .reallynow{background-color:#464646;color:#fff;-moz-box-shadow:#fff 0 -1px 0;-khtml-box-shadow:#fff 0 -1px 0;-webkit-box-shadow:#fff 0 -1px 0;box-shadow:#fff 0 -1px 0;}#plugin-information .action-button{background-color:#d54e21;color:#fff;}#adminmenu li.current a #awaiting-mod,#adminmenu li a.wp-has-current-submenu .update-plugins{background-color:#464646;color:#fff;-moz-box-shadow:#fff 0 -1px 0;-khtml-box-shadow:#fff 0 -1px 0;-webkit-box-shadow:#fff 0 -1px 0;box-shadow:#fff 0 -1px 0;}div#media-upload-header,div#plugin-information-header{background-color:#f9f9f9;border-bottom-color:#dfdfdf;}#currenttheme img{border-color:#666;}#dashboard_secondary div.dashboard-widget-content ul li a{background-color:#f9f9f9;}input.readonly,textarea.readonly{background-color:#ddd;}#ed_toolbar input,#ed_reply_toolbar input{background:#fff url("../images/fade-butt.png") repeat-x 0 -2px;}#editable-post-name{background-color:#fffbcc;}#edit-slug-box strong,.tablenav .displaying-num,#submitted-on,.submitted-on{color:#777;}.login #nav a{color:#21759b!important;}.login #nav a:hover{color:#d54e21!important;}#footer{color:#777;border-color:#d1d1d1;background:#d9d9d9;background:-moz-linear-gradient(bottom,#d7d7d7,#e4e4e4);background:-webkit-gradient(linear,left bottom,left top,from(#d7d7d7),to(#e4e4e4));}#media-items,.imgedit-group{border-color:#dfdfdf;}.checkbox,.side-info,.plugins tr,#your-profile #rich_editing{background-color:#fff;}.plugins .inactive,.plugins .inactive th,.plugins .inactive td,tr.inactive+tr.plugin-update-tr .plugin-update{background-color:#eee;}.plugin-update-tr .update-message{background-color:#fffbe4;border-color:#dfdfdf;}.plugins .active,.plugins .active th,.plugins .active td{color:#000;}.plugins .inactive a{color:#579;}#the-comment-list tr.undo,#the-comment-list div.undo{background-color:#f4f4f4;}#the-comment-list .unapproved{background-color:#ffffe0;}#the-comment-list .approve a{color:#006505;}#the-comment-list .unapprove a{color:#d98500;}table.widefat span.delete a,table.widefat span.trash a,table.widefat span.spam a,#dashboard_recent_comments .delete a,#dashboard_recent_comments .trash a,#dashboard_recent_comments .spam a{color:#bc0b0b;}.widget,#widget-list .widget-top,.postbox,#titlediv,#poststuff .postarea,.stuffbox{border-color:#dfdfdf;}.widget,.postbox{background-color:#fff;}.ui-sortable .postbox h3{color:#464646;}.widget .widget-top,.ui-sortable .postbox h3:hover{color:#000;}.curtime #timestamp{background-image:url(../images/date-button.gif);}#quicktags #ed_link{color:#00f;}#rightnow .youhave{background-color:#f0f6fb;}#rightnow a{color:#448abd;}.tagchecklist span a,#bulk-titles div a{background:url(../images/xit.gif) no-repeat;}.tagchecklist span a:hover,#bulk-titles div a:hover{background:url(../images/xit.gif) no-repeat -10px 0;}#update-nag,.update-nag{background-color:#FFFBCC;border-color:#E6DB55;color:#555;}.login #backtoblog a{color:#464646;}#wphead{border-bottom:#c6c6c6 1px solid;background:#d9d9d9;background:-moz-linear-gradient(bottom,#d7d7d7,#e4e4e4);background:-webkit-gradient(linear,left bottom,left top,from(#d7d7d7),to(#e4e4e4));}#wphead h1 a{color:#464646;}#user_info{color:#777;}#user_info a:link,#user_info a:visited,#footer a:link,#footer a:visited{color:#222;text-decoration:none;}#user_info a:hover,#footer a:hover{color:#000;text-decoration:underline!important;}div#media-upload-error,.file-error,abbr.required,.widget-control-remove:hover,table.widefat .delete a:hover,table.widefat .trash a:hover,table.widefat .spam a:hover,#dashboard_recent_comments .delete a:hover,#dashboard_recent_comments .trash a:hover #dashboard_recent_comments .spam a:hover{color:#f00;}#pass-strength-result{background-color:#eee;border-color:#ddd!important;}#pass-strength-result.bad{background-color:#ffb78c;border-color:#ff853c!important;}#pass-strength-result.good{background-color:#ffec8b;border-color:#fc0!important;}#pass-strength-result.short{background-color:#ffa0a0;border-color:#f04040!important;}#pass-strength-result.strong{background-color:#c3ff88;border-color:#8dff1c!important;}#quicktags{border-color:#dfdfdf;background-color:#dfdfdf;background-image:url("../images/ed-bg.gif");}#ed_toolbar input{border-color:#C3C3C3;}#ed_toolbar input:hover{border-color:#aaa;background:#ddd;}#poststuff .wp_themeSkin .mceStatusbar{border-color:#EDEDED;}#poststuff #edButtonPreview,#poststuff #edButtonHTML{background-color:#f1f1f1;border-color:#dfdfdf;color:#999;}#poststuff #editor-toolbar .active{border-bottom-color:#e9e9e9;background-color:#e9e9e9;color:#333;}#post-status-info{background-color:#EDEDED;}.wp_themeSkin *,.wp_themeSkin a:hover,.wp_themeSkin a:link,.wp_themeSkin a:visited,.wp_themeSkin a:active{color:#000;}.wp_themeSkin iframe{background:#fff;}.wp_themeSkin .mceStatusbar{color:#000;background-color:#f5f5f5;}.wp_themeSkin .mceButton{background-color:#e9e8e8;border-color:#B2B2B2;}.wp_themeSkin a.mceButtonEnabled:hover,.wp_themeSkin a.mceButtonActive,.wp_themeSkin a.mceButtonSelected{background:#d5d5d5;border-color:#777!important;}.wp_themeSkin .mceButtonDisabled{border-color:#ccc!important;}.wp_themeSkin .mceListBox .mceText,.wp_themeSkin .mceListBox .mceOpen{border-color:#B2B2B2;background-color:#d5d5d5;}.wp_themeSkin table.mceListBoxEnabled:hover .mceOpen,.wp_themeSkin .mceListBoxHover .mceOpen,.wp_themeSkin .mceListBoxSelected .mceOpen,.wp_themeSkin .mceListBoxSelected .mceText{border-color:#777!important;background-color:#d5d5d5;}.wp_themeSkin table.mceListBoxEnabled:hover .mceText,.wp_themeSkin .mceListBoxHover .mceText{border-color:#777!important;}.wp_themeSkin select.mceListBox{border-color:#B2B2B2;background-color:#fff;}.wp_themeSkin .mceSplitButton a.mceAction,.wp_themeSkin .mceSplitButton a.mceOpen{border-color:#B2B2B2;}.wp_themeSkin .mceSplitButton a.mceOpen:hover,.wp_themeSkin .mceSplitButtonSelected a.mceOpen,.wp_themeSkin table.mceSplitButtonEnabled:hover a.mceAction,.wp_themeSkin .mceSplitButton a.mceAction:hover{background-color:#d5d5d5;border-color:#777!important;}.wp_themeSkin .mceSplitButtonActive{background-color:#B2B2B2;}.wp_themeSkin div.mceColorSplitMenu table{background-color:#ebebeb;border-color:#B2B2B2;}.wp_themeSkin .mceColorSplitMenu a{border-color:#B2B2B2;}.wp_themeSkin .mceColorSplitMenu a.mceMoreColors{border-color:#fff;}.wp_themeSkin .mceColorSplitMenu a.mceMoreColors:hover{border-color:#0A246A;background-color:#B6BDD2;}.wp_themeSkin a.mceMoreColors:hover{border-color:#0A246A;}.wp_themeSkin .mceMenu{border-color:#ddd;}.wp_themeSkin .mceMenu table{background-color:#ebeaeb;}.wp_themeSkin .mceMenu .mceText{color:#000;}.wp_themeSkin .mceMenu .mceMenuItemEnabled a:hover,.wp_themeSkin .mceMenu .mceMenuItemActive{background-color:#f5f5f5;}.wp_themeSkin td.mceMenuItemSeparator{background-color:#aaa;}.wp_themeSkin .mceMenuItemTitle a{background-color:#ccc;border-bottom-color:#aaa;}.wp_themeSkin .mceMenuItemTitle span.mceText{color:#000;}.wp_themeSkin .mceMenuItemDisabled .mceText{color:#888;}.wp_themeSkin tr.mceFirst td.mceToolbar{background:#dfdfdf url("../images/ed-bg.gif") repeat-x scroll left top;border-color:#dfdfdf;}.wp-admin #mceModalBlocker{background:#000;}.wp-admin .clearlooks2 .mceFocus .mceTop .mceLeft{background:#444;border-left:1px solid #999;border-top:1px solid #999;-moz-border-radius:4px 0 0 0;-webkit-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px;}.wp-admin .clearlooks2 .mceFocus .mceTop .mceRight{background:#444;border-right:1px solid #999;border-top:1px solid #999;border-top-right-radius:4px;-khtml-border-top-right-radius:4px;-webkit-border-top-right-radius:4px;-moz-border-radius:0 4px 0 0;}.wp-admin .clearlooks2 .mceMiddle .mceLeft{background:#f1f1f1;border-left:1px solid #999;}.wp-admin .clearlooks2 .mceMiddle .mceRight{background:#f1f1f1;border-right:1px solid #999;}.wp-admin .clearlooks2 .mceBottom{background:#f1f1f1;border-bottom:1px solid #999;}.wp-admin .clearlooks2 .mceBottom .mceLeft{background:#f1f1f1;border-bottom:1px solid #999;border-left:1px solid #999;}.wp-admin .clearlooks2 .mceBottom .mceCenter{background:#f1f1f1;border-bottom:1px solid #999;}.wp-admin .clearlooks2 .mceBottom .mceRight{background:#f1f1f1;border-bottom:1px solid #999;border-right:1px solid #999;}.wp-admin .clearlooks2 .mceFocus .mceTop span{color:#e5e5e5;}#editorcontainer,#post-status-info,#titlediv #title,.editwidget .widget-inside{border-color:#dfdfdf;}#titlediv #title{background-color:#fff;}#tTips p#tTips_inside{background-color:#ddd;color:#333;}#timestampdiv input,#namediv input,#poststuff .inside .the-tagcloud{border-color:#ddd;}#adminmenu *{border-color:#e3e3e3;}#adminmenu li.wp-menu-separator{background:transparent url(../images/menu-arrows.gif) no-repeat scroll left 5px;}.folded #adminmenu li.wp-menu-separator{background:transparent url(../images/menu-arrows.gif) no-repeat scroll right -34px;}#adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle,#adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle{background:transparent url(../images/menu-bits.gif?ver=20100610) no-repeat scroll left -207px;}#adminmenu .wp-has-submenu:hover .wp-menu-toggle,#adminmenu .wp-menu-open .wp-menu-toggle{background:transparent url(../images/menu-bits.gif?ver=20100610) no-repeat scroll left -109px;}#adminmenu a.menu-top{background:#f1f1f1 url(../images/menu-bits.gif?ver=20100610) repeat-x scroll left -379px;}#adminmenu .wp-submenu a{background:#fff url(../images/menu-bits.gif?ver=20100610) no-repeat scroll 0 -310px;}#adminmenu .wp-has-current-submenu ul li a{background:none;}#adminmenu .wp-has-current-submenu ul li a.current{background:url(../images/menu-dark.gif) top left no-repeat!important;}.wp-has-current-submenu .wp-submenu{border-top:none!important;}#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu{border-bottom:#aaa 1px solid;}#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,#adminmenu li.current a.menu-top{background:#e0e0e0 url(../images/menu-bits.gif?ver=20100610) top left repeat-x;border:#aaa 1px solid;color:#000;}#adminmenu li.wp-has-current-submenu .wp-submenu,#adminmenu li.wp-has-current-submenu ul li a{border-right-color:#aaa!important;border-left-color:#aaa!important;}#adminmenu li.wp-has-current-submenu ul li a{background:url(../images/menu-dark.gif) bottom left no-repeat!important;}#adminmenu li.wp-has-current-submenu ul{border-bottom-color:#aaa;}#adminmenu .wp-submenu .current a.current{background:transparent url(../images/menu-bits.gif?ver=20100610) no-repeat scroll 0 -289px;}#adminmenu .wp-submenu a:hover{background-color:#EAF2FA!important;color:#333!important;}#adminmenu .wp-submenu li.current,#adminmenu .wp-submenu li.current a,#adminmenu .wp-submenu li.current a:hover{color:#333;background-color:#f5f5f5;background-image:none;border-color:#e3e3e3;}#adminmenu .wp-submenu ul{background-color:#fff;}.folded #adminmenu li.menu-top,#adminmenu .wp-submenu .wp-submenu-head{background-color:#F1F1F1;}.folded #adminmenu li.wp-has-current-submenu,.folded #adminmenu li.menu-top.current{background-color:#e6e6e6;}#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head{background-color:#EAEAEA;border-color:#aaa;}#adminmenu div.wp-submenu{background-color:transparent;}#adminmenu .menu-icon-dashboard div.wp-menu-image{background:transparent url('../images/menu.png?ver=20100531') no-repeat scroll -61px -33px;}#adminmenu .menu-icon-dashboard:hover div.wp-menu-image,#adminmenu .menu-icon-dashboard.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-dashboard.current div.wp-menu-image{background:transparent url('../images/menu.png?ver=20100531') no-repeat scroll -61px -1px;}#adminmenu .menu-icon-post div.wp-menu-image{background:transparent url('../images/menu.png?ver=20100531') no-repeat scroll -272px -33px;}#adminmenu .menu-icon-post:hover div.wp-menu-image,#adminmenu .menu-icon-post.wp-has-current-submenu div.wp-menu-image{background:transparent url('../images/menu.png?ver=20100531') no-repeat scroll -272px -1px;}#adminmenu .menu-icon-media div.wp-menu-image{background:transparent url('../images/menu.png?ver=20100531') no-repeat scroll -121px -33px;}#adminmenu .menu-icon-media:hover div.wp-menu-image,#adminmenu .menu-icon-media.wp-has-current-submenu div.wp-menu-image{background:transparent url('../images/menu.png?ver=20100531') no-repeat scroll -121px -1px;}#adminmenu .menu-icon-links div.wp-menu-image{background:transparent url('../images/menu.png?ver=20100531') no-repeat scroll -91px -33px;}#adminmenu .menu-icon-links:hover div.wp-menu-image,#adminmenu .menu-icon-links.wp-has-current-submenu div.wp-menu-image{background:transparent url('../images/menu.png?ver=20100531') no-repeat scroll -91px -1px;}#adminmenu .menu-icon-page div.wp-menu-image{background:transparent url('../images/menu.png?ver=20100531') no-repeat scroll -151px -33px;}#adminmenu .menu-icon-page:hover div.wp-menu-image,#adminmenu .menu-icon-page.wp-has-current-submenu div.wp-menu-image{background:transparent url('../images/menu.png?ver=20100531') no-repeat scroll -151px -1px;}#adminmenu .menu-icon-comments div.wp-menu-image{background:transparent url('../images/menu.png?ver=20100531') no-repeat scroll -31px -33px;}#adminmenu .menu-icon-comments:hover div.wp-menu-image,#adminmenu .menu-icon-comments.wp-has-current-submenu div.wp-menu-image,#adminmenu .menu-icon-comments.current div.wp-menu-image{background:transparent url('../images/menu.png?ver=20100531') no-repeat scroll -31px -1px;}#adminmenu .menu-icon-appearance div.wp-menu-image{background:transparent url('../images/menu.png?ver=20100531') no-repeat scroll -1px -33px;}#adminmenu .menu-icon-appearance:hover div.wp-menu-image,#adminmenu .menu-icon-appearance.wp-has-current-submenu div.wp-menu-image{background:transparent url('../images/menu.png?ver=20100531') no-repeat scroll -1px -1px;}#adminmenu .menu-icon-plugins div.wp-menu-image{background:transparent url('../images/menu.png?ver=20100531') no-repeat scroll -181px -33px;}#adminmenu .menu-icon-plugins:hover div.wp-menu-image,#adminmenu .menu-icon-plugins.wp-has-current-submenu div.wp-menu-image{background:transparent url('../images/menu.png?ver=20100531') no-repeat scroll -181px -1px;}#adminmenu .menu-icon-users div.wp-menu-image{background:transparent url('../images/menu.png?ver=20100531') no-repeat scroll -301px -33px;}#adminmenu .menu-icon-users:hover div.wp-menu-image,#adminmenu .menu-icon-users.wp-has-current-submenu div.wp-menu-image{background:transparent url('../images/menu.png?ver=20100531') no-repeat scroll -301px -1px;}#adminmenu .menu-icon-tools div.wp-menu-image{background:transparent url('../images/menu.png?ver=20100531') no-repeat scroll -211px -33px;}#adminmenu .menu-icon-tools:hover div.wp-menu-image,#adminmenu .menu-icon-tools.wp-has-current-submenu div.wp-menu-image{background:transparent url('../images/menu.png?ver=20100531') no-repeat scroll -211px -1px;}#adminmenu .menu-icon-settings div.wp-menu-image{background:transparent url('../images/menu.png?ver=20100531') no-repeat scroll -241px -33px;}#adminmenu .menu-icon-settings:hover div.wp-menu-image,#adminmenu .menu-icon-settings.wp-has-current-submenu div.wp-menu-image{background:transparent url('../images/menu.png?ver=20100531') no-repeat scroll -241px -1px;}#adminmenu .menu-icon-site div.wp-menu-image{background:transparent url('../images/menu.png?ver=20100531') no-repeat scroll -361px -33px;}#adminmenu .menu-icon-site:hover div.wp-menu-image,#adminmenu .menu-icon-site.wp-has-current-submenu div.wp-menu-image{background:transparent url('../images/menu.png?ver=20100531') no-repeat scroll -361px -1px;}table.diff .diff-deletedline{background-color:#fdd;}table.diff .diff-deletedline del{background-color:#f99;}table.diff .diff-addedline{background-color:#dfd;}table.diff .diff-addedline ins{background-color:#9f9;}#att-info{background-color:#E4F2FD;}#sidemenu a{background-color:#f9f9f9;border-color:#f9f9f9;border-bottom-color:#dfdfdf;}#sidemenu a.current{background-color:#fff;border-color:#dfdfdf #dfdfdf #fff;color:#D54E21;}#screen-options-wrap,#contextual-help-wrap{background-color:#f1f1f1;border-color:#dfdfdf;}#screen-meta-links a.show-settings{color:#606060;}#screen-meta-links a.show-settings:hover{color:#000;}#replysubmit{background-color:#f1f1f1;border-top-color:#ddd;}#replyerror{border-color:#ddd;background-color:#f9f9f9;}#edithead,#replyhead{background-color:#f1f1f1;}#ed_reply_toolbar{background-color:#e9e9e9;}.vim-current,.vim-current th,.vim-current td{background-color:#E4F2FD!important;}.star-average,.star.star-rating{background-color:#fc0;}div.star.select:hover{background-color:#d00;}#plugin-information .fyi ul{background-color:#eaf3fa;}#plugin-information .fyi h2.mainheader{background-color:#cee1ef;}#plugin-information pre,#plugin-information code{background-color:#ededff;}#plugin-information pre{border:1px solid #ccc;}.inline-edit-row fieldset input[type="text"],.inline-edit-row fieldset textarea,#bulk-titles,#replyrow input{border-color:#ddd;}.inline-editor div.title{background-color:#EAF3FA;}.inline-editor ul.cat-checklist{background-color:#fff;border-color:#ddd;}.inline-editor .categories .catshow,.inline-editor .categories .cathide{color:#21759b;}.inline-editor .quick-edit-save{background-color:#f1f1f1;}#replyrow #ed_reply_toolbar input:hover{border-color:#aaa;background:#ddd;}fieldset.inline-edit-col-right .inline-edit-col{border-color:#dfdfdf;}.attention{color:#D54E21;}.meta-box-sortables .postbox:hover .handlediv{background:transparent url(../images/menu-bits.gif?ver=20100610) no-repeat scroll left -111px;}#major-publishing-actions{background:#eaf2fa;}.tablenav .tablenav-pages{color:#555;}.tablenav .tablenav-pages a{border-color:#e3e3e3;background:#eee url('../images/menu-bits.gif?ver=20100610') repeat-x scroll left -379px;}.tablenav .tablenav-pages a:hover,.tablenav .tablenav-pages a:focus{color:#d54e21;}.tablenav .tablenav-pages a.disabled,.tablenav .tablenav-pages a.disabled:hover,.tablenav .tablenav-pages a.disabled:focus{color:#aaa;}.tablenav .tablenav-pages .current{background:#dfdfdf;border-color:#d3d3d3;}#availablethemes,#availablethemes td{border-color:#ddd;}#current-theme img{border-color:#999;}#TB_window #TB_title a.tb-theme-preview-link,#TB_window #TB_title a.tb-theme-preview-link:visited{color:#999;}#TB_window #TB_title a.tb-theme-preview-link:hover,#TB_window #TB_title a.tb-theme-preview-link:focus{color:#ccc;}.misc-pub-section{border-bottom-color:#eee;}#minor-publishing{border-bottom-color:#ddd;}#post-body .misc-pub-section{border-right-color:#eee;}.post-com-count span{background-color:#bbb;}.form-table .color-palette td{border-color:#fff;}.sortable-placeholder{border-color:#bbb;background-color:#f5f5f5;}#post-body ul.category-tabs li.tabs a,#post-body ul.add-menu-item-tabs li.tabs a,body.press-this ul.category-tabs li.tabs a{color:#333;}#wp_editimgbtn,#wp_delimgbtn,#wp_editgallery,#wp_delgallery{border-color:#999;background-color:#eee;}#wp_editimgbtn:hover,#wp_delimgbtn:hover,#wp_editgallery:hover,#wp_delgallery:hover{border-color:#555;background-color:#ccc;}#favorite-first{border-color:#c0c0c0;background:#f1f1f1;background:-moz-linear-gradient(bottom,#e7e7e7,#fff);background:-webkit-gradient(linear,left bottom,left top,from(#e7e7e7),to(#fff));}#favorite-inside{border-color:#c0c0c0;background-color:#fff;}#favorite-toggle{background:transparent url(../images/fav-arrow.gif?ver=20100531) no-repeat 0 -4px;}#favorite-actions a{color:#464646;}#favorite-actions a:hover{color:#000;}#favorite-inside a:hover{text-decoration:underline;}#screen-meta a.show-settings,.toggle-arrow{background-image:url("../images/screen-options-toggle.gif?ver=20100531");}#icon-edit,#icon-post{background:transparent url(../images/icons32.png?ver=20100531) no-repeat -552px -5px;}#icon-index{background:transparent url(../images/icons32.png?ver=20100531) no-repeat -137px -5px;}#icon-upload{background:transparent url(../images/icons32.png?ver=20100531) no-repeat -251px -5px;}#icon-link-manager,#icon-link,#icon-link-category{background:transparent url(../images/icons32.png?ver=20100531) no-repeat -190px -5px;}#icon-edit-pages,#icon-page{background:transparent url(../images/icons32.png?ver=20100531) no-repeat -312px -5px;}#icon-edit-comments{background:transparent url(../images/icons32.png?ver=20100531) no-repeat -72px -5px;}#icon-themes{background:transparent url(../images/icons32.png?ver=20100531) no-repeat -11px -5px;}#icon-plugins{background:transparent url(../images/icons32.png?ver=20100531) no-repeat -370px -5px;}#icon-users,#icon-profile,#icon-user-edit{background:transparent url(../images/icons32.png?ver=20100531) no-repeat -600px -5px;}#icon-tools,#icon-admin{background:transparent url(../images/icons32.png?ver=20100531) no-repeat -432px -5px;}#icon-options-general{background:transparent url(../images/icons32.png?ver=20100531) no-repeat -492px -5px;}#icon-ms-admin{background:transparent url(../images/icons32.png?ver=20100531) no-repeat -659px -5px;}.view-switch #view-switch-list{background:transparent url(../images/list.png) no-repeat 0 0;}.view-switch .current #view-switch-list{background:transparent url(../images/list.png) no-repeat -40px 0;}.view-switch #view-switch-excerpt{background:transparent url(../images/list.png) no-repeat -20px 0;}.view-switch .current #view-switch-excerpt{background:transparent url(../images/list.png) no-repeat -60px 0;}#header-logo{background:transparent url(../images/wp-logo.png?ver=20100531) no-repeat scroll center center;}.popular-tags,.feature-filter{background-color:#fff;border-color:#DFDFDF;}#theme-information .action-button{border-top-color:#DFDFDF;}.theme-listing br.line{border-bottom-color:#ccc;}div.widgets-sortables,#widgets-left .inactive{background-color:#f1f1f1;border-color:#ddd;}#available-widgets .widget-holder{background-color:#fff;border-color:#ddd;}#widgets-left .sidebar-name{background-color:#aaa;background-image:url(../images/ed-bg.gif);text-shadow:#fff 0 1px 0;border-color:#dfdfdf;}#widgets-right .sidebar-name{background-image:url(../images/fav.png);text-shadow:#3f3f3f 0 -1px 0;background-color:#636363;border-color:#636363;color:#fff;}.sidebar-name:hover,#removing-widget{color:#d54e21;}#removing-widget span{color:black;}#widgets-left .sidebar-name-arrow{background:transparent url(../images/menu-bits.gif?ver=20100610) no-repeat scroll left -109px;}#widgets-right .sidebar-name-arrow{background:transparent url(../images/widgets-arrow.gif?ver=20100531) no-repeat scroll 0 -1px;}.in-widget-title{color:#606060;}.deleting .widget-title *{color:#aaa;}.imgedit-menu div{border-color:#d5d5d5;background-color:#f1f1f1;}.imgedit-menu div:hover{border-color:#c1c1c1;background-color:#eaeaea;}.imgedit-menu div.disabled{border-color:#ccc;background-color:#ddd;filter:alpha(opacity=50);opacity:.5;}#dashboard_recent_comments div.undo{border-top-color:#dfdfdf;}.comment-ays,.comment-ays th{border-color:#ddd;}.comment-ays th{background-color:#f1f1f1;}#nav-menu-header,#nav-menu-footer,.menu-item-handle{background:url("../images/gray-grad.png") repeat-x scroll left top #dfdfdf;}#menu-management .nav-tab-active{background:#ececec;border-bottom-color:#ececec;}wp-admin/css/colors-fresh.dev.css0000644002347300047320000010174311656660274016630 0ustar vonfabpsaclnhtml, .wp-dialog { background-color: #f9f9f9; } * html input, * html .widget { border-color: #dfdfdf; } textarea, input[type="text"], input[type="password"], input[type="file"], input[type="button"], input[type="submit"], input[type="reset"], select { border-color: #dfdfdf; background-color: #fff; } kbd, code { background: #eaeaea; } input[readonly] { background-color: #eee; } .find-box-search { border-color: #dfdfdf; background-color: #f1f1f1; } .find-box { background-color: #f1f1f1; } .find-box-inside { background-color: #fff; } a.page-numbers:hover { border-color: #999; } body, #wpbody, .form-table .pre { color: #333; } body > #upload-menu { border-bottom-color: #fff; } #postcustomstuff table, #your-profile fieldset, #rightnow, div.dashboard-widget, #dashboard-widgets p.dashboard-widget-links, #replyrow #ed_reply_toolbar input { border-color: #ccc; } #poststuff .inside label.spam, #poststuff .inside label.deleted { color: red; } #poststuff .inside label.waiting { color: orange; } #poststuff .inside label.approved { color: green; } #postcustomstuff table { border-color: #dfdfdf; background-color: #F9F9F9; } #postcustomstuff thead th { background-color: #F1F1F1; } #postcustomstuff table input, #postcustomstuff table textarea { border-color: #dfdfdf; background-color: #fff; } .widefat { border-color: #dfdfdf; background-color: #fff; } div.dashboard-widget-error { background-color: #c43; } div.dashboard-widget-notice { background-color: #cfe1ef; } div.dashboard-widget-submit { border-top-color: #ccc; } div.tabs-panel, .wp-tab-panel, ul.category-tabs li.tabs, ul.add-menu-item-tabs li.tabs, .wp-tab-active { border-color: #dfdfdf; } ul.category-tabs li.tabs, ul.add-menu-item-tabs li.tabs, .wp-tab-active { background-color: #f1f1f1; } input.disabled, textarea.disabled { background-color: #ccc; } /* #upload-menu li a.upload-tab-link, */ #plugin-information .action-button a, #plugin-information .action-button a:hover, #plugin-information .action-button a:visited { color: #fff; } .widget .widget-top, .postbox h3, .stuffbox h3 { background: #dfdfdf url("../images/gray-grad.png") repeat-x left top; text-shadow: #fff 0 1px 0; } .form-table th, .form-wrap label { color: #222; text-shadow: #fff 0 1px 0; } .description, .form-wrap p { color: #666; } strong .post-com-count span { background-color: #21759b; } .sorthelper { background-color: #ccf3fa; } .ac_match, .subsubsub a.current { color: #000; } .wrap h2 { color: #464646; } .ac_over { background-color: #f0f0b8; } .ac_results { background-color: #fff; border-color: #808080; } .ac_results li { color: #101010; } .alternate, .alt { background-color: #f9f9f9; } .available-theme a.screenshot { background-color: #f1f1f1; border-color: #ddd; } .bar { background-color: #e8e8e8; border-right-color: #99d; } #media-upload, #media-upload .media-item .slidetoggle { background: #fff; } #media-upload .slidetoggle { border-top-color: #dfdfdf; } div.error, .login #login_error { background-color: #ffebe8; border-color: #c00; } div.error a { color: #c00; } .form-invalid { background-color: #ffebe8 !important; } .form-invalid input, .form-invalid select { border-color: #c00 !important; } .submit { border-color: #DFDFDF; } .highlight { background-color: #e4f2fd; color: #000; } .howto, .nonessential, #edit-slug-box, .form-input-tip, .rss-widget span.rss-date, .subsubsub { color: #666; } .media-item { border-bottom-color: #dfdfdf; } #wpbody-content #media-items .describe { border-top-color: #dfdfdf; } .media-upload-form label.form-help, td.help { color: #9a9a9a; } .post-com-count { background-image: url(../images/bubble_bg.gif); color: #fff; } .post-com-count span { background-color: #bbb; color: #fff; } .post-com-count:hover span { background-color: #d54e21; } .quicktags, .search { background-color: #ccc; color: #000; } .side-info h5 { border-bottom-color: #dadada; } .side-info ul { color: #666; } .button, .button-secondary, .submit input, input[type=button], input[type=submit] { border-color: #bbb; color: #464646; } .button:hover, .button-secondary:hover, .submit input:hover, input[type=button]:hover, input[type=submit]:hover { color: #000; border-color: #666; } .button, .submit input, .button-secondary { background: #f2f2f2 url(../images/white-grad.png) repeat-x scroll left top; text-shadow: rgba(255,255,255,1) 0 1px 0; } .button:active, .submit input:active, .button-secondary:active { background: #eee url(../images/white-grad-active.png) repeat-x scroll left top; } input.button-primary, button.button-primary, a.button-primary { border-color: #298cba; font-weight: bold; color: #fff; background: #21759B url(../images/button-grad.png) repeat-x scroll left top; text-shadow: rgba(0,0,0,0.3) 0 -1px 0; } input.button-primary:active, button.button-primary:active, a.button-primary:active { background: #21759b url(../images/button-grad-active.png) repeat-x scroll left top; color: #eaf2fa; } input.button-primary:hover, button.button-primary:hover, a.button-primary:hover, a.button-primary:focus, a.button-primary:active { border-color: #13455b; color: #eaf2fa; } .button-disabled, .button[disabled], .button:disabled, .button-secondary[disabled], .button-secondary:disabled, a.button.disabled { color: #aaa !important; border-color: #ddd !important; } .button-primary-disabled, .button-primary[disabled], .button-primary:disabled { color: #9FD0D5 !important; background: #298CBA !important; } a:hover, a:active, a:focus { color: #d54e21; } #wphead #viewsite a:hover, #adminmenu a:hover, #adminmenu ul.wp-submenu a:hover, #the-comment-list .comment a:hover, #rightnow a:hover, #media-upload a.del-link:hover, div.dashboard-widget-submit input:hover, .subsubsub a:hover, .subsubsub a.current:hover, .ui-tabs-nav a:hover, .plugins .inactive a:hover, #all-plugins-table .plugins .inactive a:hover, #search-plugins-table .plugins .inactive a:hover { color: #d54e21; } #the-comment-list .comment-item, #dashboard-widgets #dashboard_quick_press form p.submit { border-color: #dfdfdf; } #side-sortables .category-tabs .tabs a, #side-sortables .add-menu-item-tabs .tabs a, .wp-tab-bar .wp-tab-active a { color: #333; } #rightnow .rbutton { background-color: #ebebeb; color: #264761; } .submitbox .submit { background-color: #464646; color: #ccc; } .plugins a.delete:hover, #all-plugins-table .plugins a.delete:hover, #search-plugins-table .plugins a.delete:hover, .submitbox .submitdelete { color: #f00; border-bottom-color: #f00; } .submitbox .submitdelete:hover, #media-items a.delete:hover { color: #fff; background-color: #f00; border-bottom-color: #f00; } #normal-sortables .submitbox .submitdelete:hover { color: #000; background-color: #f00; border-bottom-color: #f00; } .tablenav .dots { border-color: transparent; } .tablenav .next, .tablenav .prev { border-color: transparent; color: #21759b; } .tablenav .next:hover, .tablenav .prev:hover { border-color: transparent; color: #d54e21; } div.updated, .login .message { background-color: #ffffe0; border-color: #e6db55; } .update-message { color: #000; } a.page-numbers { border-bottom-color: #B8D3E2; } .commentlist li { border-bottom-color: #ccc; } .widefat td, .widefat th { border-color: #dfdfdf; } .widefat th { text-shadow: rgba(255,255,255,0.8) 0 1px 0; } .widefat thead tr th, .widefat tfoot tr th, h3.dashboard-widget-title, h3.dashboard-widget-title span, h3.dashboard-widget-title small, .find-box-head { color: #333; background: #dfdfdf url(../images/gray-grad.png) repeat-x scroll left top; } th.sortable a:hover, th.sortable a:active, th.sortable a:focus { color: #333; } h3.dashboard-widget-title small a { color: #d7d7d7; } h3.dashboard-widget-title small a:hover { color: #fff; } a, #adminmenu a, #poststuff #edButtonPreview, #poststuff #edButtonHTML, #the-comment-list p.comment-author strong a, #media-upload a.del-link, #media-items a.delete, .plugins a.delete, .ui-tabs-nav a { color: #21759b; } #adminmenu #awaiting-mod, #adminmenu .update-plugins, #sidemenu a .update-plugins, #rightnow .reallynow { background-color: #464646; color: #fff; -moz-box-shadow: #fff 0 -1px 0; -khtml-box-shadow: #fff 0 -1px 0; -webkit-box-shadow: #fff 0 -1px 0; box-shadow: #fff 0 -1px 0; } #plugin-information .action-button { background-color: #d54e21; color: #fff; } #adminmenu li.current a #awaiting-mod, #adminmenu li a.wp-has-current-submenu .update-plugins{ background-color: #464646; color: #fff; -moz-box-shadow: #fff 0 -1px 0; -khtml-box-shadow: #fff 0 -1px 0; -webkit-box-shadow: #fff 0 -1px 0; box-shadow: #fff 0 -1px 0; } div#media-upload-header, div#plugin-information-header { background-color: #f9f9f9; border-bottom-color: #dfdfdf; } #currenttheme img { border-color: #666; } #dashboard_secondary div.dashboard-widget-content ul li a { background-color: #f9f9f9; } input.readonly, textarea.readonly { background-color: #ddd; } #ed_toolbar input, #ed_reply_toolbar input { background: #fff url("../images/fade-butt.png") repeat-x 0 -2px; } #editable-post-name { background-color: #fffbcc; } #edit-slug-box strong, .tablenav .displaying-num, #submitted-on, .submitted-on { color: #777; } .login #nav a { color: #21759b !important; } .login #nav a:hover { color: #d54e21 !important; } #footer { color: #777; border-color: #d1d1d1; background: #d9d9d9; /* fallback color */ background:-moz-linear-gradient(bottom, #d7d7d7, #e4e4e4); background:-webkit-gradient(linear, left bottom, left top, from(#d7d7d7), to(#e4e4e4)); } #media-items, .imgedit-group { border-color: #dfdfdf; } .checkbox, .side-info, .plugins tr, #your-profile #rich_editing { background-color: #fff; } .plugins .inactive, .plugins .inactive th, .plugins .inactive td, tr.inactive + tr.plugin-update-tr .plugin-update { background-color: #eee; } .plugin-update-tr .update-message { background-color: #fffbe4; border-color: #dfdfdf; } .plugins .active, .plugins .active th, .plugins .active td { color: #000; } .plugins .inactive a { color: #557799; } #the-comment-list tr.undo, #the-comment-list div.undo { background-color: #f4f4f4; } #the-comment-list .unapproved { background-color: #ffffe0; } #the-comment-list .approve a { color: #006505; } #the-comment-list .unapprove a { color: #d98500; } table.widefat span.delete a, table.widefat span.trash a, table.widefat span.spam a, #dashboard_recent_comments .delete a, #dashboard_recent_comments .trash a, #dashboard_recent_comments .spam a { color: #bc0b0b; } .widget, #widget-list .widget-top, .postbox, #titlediv, #poststuff .postarea, .stuffbox { border-color: #dfdfdf; } .widget, .postbox { background-color: #fff; } .ui-sortable .postbox h3 { color: #464646; } .widget .widget-top, .ui-sortable .postbox h3:hover { color: #000; } .curtime #timestamp { background-image: url(../images/date-button.gif); } #quicktags #ed_link { color: #00f; } #rightnow .youhave { background-color: #f0f6fb; } #rightnow a { color: #448abd; } .tagchecklist span a, #bulk-titles div a { background: url(../images/xit.gif) no-repeat; } .tagchecklist span a:hover, #bulk-titles div a:hover { background: url(../images/xit.gif) no-repeat -10px 0; } #update-nag, .update-nag { background-color: #FFFBCC; border-color: #E6DB55; color: #555; } .login #backtoblog a { color: #464646; } #wphead { border-bottom:#c6c6c6 1px solid; background: #d9d9d9; /* fallback color */ background:-moz-linear-gradient(bottom, #d7d7d7, #e4e4e4); background:-webkit-gradient(linear, left bottom, left top, from(#d7d7d7), to(#e4e4e4)); } #wphead h1 a { color: #464646; } #user_info { color: #777; } #user_info a:link, #user_info a:visited, #footer a:link, #footer a:visited { color: #222; text-decoration: none; } #user_info a:hover, #footer a:hover { color: #000; text-decoration: underline !important; } div#media-upload-error, .file-error, abbr.required, .widget-control-remove:hover, table.widefat .delete a:hover, table.widefat .trash a:hover, table.widefat .spam a:hover, #dashboard_recent_comments .delete a:hover, #dashboard_recent_comments .trash a:hover #dashboard_recent_comments .spam a:hover { color: #f00; } #pass-strength-result { background-color: #eee; border-color: #ddd !important; } #pass-strength-result.bad { background-color: #ffb78c; border-color: #ff853c !important; } #pass-strength-result.good { background-color: #ffec8b; border-color: #fc0 !important; } #pass-strength-result.short { background-color: #ffa0a0; border-color: #f04040 !important; } #pass-strength-result.strong { background-color: #c3ff88; border-color: #8dff1c !important; } /* editors */ #quicktags { border-color: #dfdfdf; background-color: #dfdfdf; background-image: url("../images/ed-bg.gif"); } #ed_toolbar input { border-color: #C3C3C3; } #ed_toolbar input:hover { border-color: #aaa; background: #ddd; } #poststuff .wp_themeSkin .mceStatusbar { border-color: #EDEDED; } #poststuff #edButtonPreview, #poststuff #edButtonHTML { background-color: #f1f1f1; border-color: #dfdfdf; color: #999; } #poststuff #editor-toolbar .active { border-bottom-color: #e9e9e9; background-color: #e9e9e9; color: #333; } /* TinyMCE */ #post-status-info { background-color: #EDEDED; } .wp_themeSkin *, .wp_themeSkin a:hover, .wp_themeSkin a:link, .wp_themeSkin a:visited, .wp_themeSkin a:active { color: #000; } /* Containers */ .wp_themeSkin iframe { background: #fff; } /* Layout */ .wp_themeSkin .mceStatusbar { color: #000; background-color: #f5f5f5; } /* Button */ .wp_themeSkin .mceButton { background-color: #e9e8e8; border-color: #B2B2B2; } .wp_themeSkin a.mceButtonEnabled:hover, .wp_themeSkin a.mceButtonActive, .wp_themeSkin a.mceButtonSelected { background: #d5d5d5; border-color: #777 !important; } .wp_themeSkin .mceButtonDisabled { border-color: #ccc !important; } /* ListBox */ .wp_themeSkin .mceListBox .mceText, .wp_themeSkin .mceListBox .mceOpen { border-color: #B2B2B2; background-color: #d5d5d5; } .wp_themeSkin table.mceListBoxEnabled:hover .mceOpen, .wp_themeSkin .mceListBoxHover .mceOpen, .wp_themeSkin .mceListBoxSelected .mceOpen, .wp_themeSkin .mceListBoxSelected .mceText { border-color: #777 !important; background-color: #d5d5d5; } .wp_themeSkin table.mceListBoxEnabled:hover .mceText, .wp_themeSkin .mceListBoxHover .mceText { border-color: #777 !important; } .wp_themeSkin select.mceListBox { border-color: #B2B2B2; background-color: #fff; } /* SplitButton */ .wp_themeSkin .mceSplitButton a.mceAction, .wp_themeSkin .mceSplitButton a.mceOpen { border-color: #B2B2B2; } .wp_themeSkin .mceSplitButton a.mceOpen:hover, .wp_themeSkin .mceSplitButtonSelected a.mceOpen, .wp_themeSkin table.mceSplitButtonEnabled:hover a.mceAction, .wp_themeSkin .mceSplitButton a.mceAction:hover { background-color: #d5d5d5; border-color: #777 !important; } .wp_themeSkin .mceSplitButtonActive { background-color: #B2B2B2; } /* ColorSplitButton */ .wp_themeSkin div.mceColorSplitMenu table { background-color: #ebebeb; border-color: #B2B2B2; } .wp_themeSkin .mceColorSplitMenu a { border-color: #B2B2B2; } .wp_themeSkin .mceColorSplitMenu a.mceMoreColors { border-color: #fff; } .wp_themeSkin .mceColorSplitMenu a.mceMoreColors:hover { border-color: #0A246A; background-color: #B6BDD2; } .wp_themeSkin a.mceMoreColors:hover { border-color: #0A246A; } /* Menu */ .wp_themeSkin .mceMenu { border-color: #ddd; } .wp_themeSkin .mceMenu table { background-color: #ebeaeb; } .wp_themeSkin .mceMenu .mceText { color: #000; } .wp_themeSkin .mceMenu .mceMenuItemEnabled a:hover, .wp_themeSkin .mceMenu .mceMenuItemActive { background-color: #f5f5f5; } .wp_themeSkin td.mceMenuItemSeparator { background-color: #aaa; } .wp_themeSkin .mceMenuItemTitle a { background-color: #ccc; border-bottom-color: #aaa; } .wp_themeSkin .mceMenuItemTitle span.mceText { color: #000; } .wp_themeSkin .mceMenuItemDisabled .mceText { color: #888; } .wp_themeSkin tr.mceFirst td.mceToolbar { background: #dfdfdf url("../images/ed-bg.gif") repeat-x scroll left top; border-color: #dfdfdf; } .wp-admin #mceModalBlocker { background: #000; } .wp-admin .clearlooks2 .mceFocus .mceTop .mceLeft { background: #444444; border-left: 1px solid #999; border-top: 1px solid #999; -moz-border-radius: 4px 0 0 0; -webkit-border-top-left-radius: 4px; -khtml-border-top-left-radius: 4px; border-top-left-radius: 4px; } .wp-admin .clearlooks2 .mceFocus .mceTop .mceRight { background: #444444; border-right: 1px solid #999; border-top: 1px solid #999; border-top-right-radius: 4px; -khtml-border-top-right-radius: 4px; -webkit-border-top-right-radius: 4px; -moz-border-radius: 0 4px 0 0; } .wp-admin .clearlooks2 .mceMiddle .mceLeft { background: #f1f1f1; border-left: 1px solid #999; } .wp-admin .clearlooks2 .mceMiddle .mceRight { background: #f1f1f1; border-right: 1px solid #999; } .wp-admin .clearlooks2 .mceBottom { background: #f1f1f1; border-bottom: 1px solid #999; } .wp-admin .clearlooks2 .mceBottom .mceLeft { background: #f1f1f1; border-bottom: 1px solid #999; border-left: 1px solid #999; } .wp-admin .clearlooks2 .mceBottom .mceCenter { background: #f1f1f1; border-bottom: 1px solid #999; } .wp-admin .clearlooks2 .mceBottom .mceRight { background: #f1f1f1; border-bottom: 1px solid #999; border-right: 1px solid #999; } .wp-admin .clearlooks2 .mceFocus .mceTop span { color: #e5e5e5; } /* end TinyMCE */ #editorcontainer, #post-status-info, #titlediv #title, .editwidget .widget-inside { border-color: #dfdfdf; } #titlediv #title { background-color: #fff; } #tTips p#tTips_inside { background-color: #ddd; color: #333; } #timestampdiv input, #namediv input, #poststuff .inside .the-tagcloud { border-color: #ddd; } /* menu */ #adminmenu * { border-color: #e3e3e3; } #adminmenu li.wp-menu-separator { background: transparent url(../images/menu-arrows.gif) no-repeat scroll left 5px; } .folded #adminmenu li.wp-menu-separator { background: transparent url(../images/menu-arrows.gif) no-repeat scroll right -34px; } #adminmenu li.wp-has-current-submenu.wp-menu-open .wp-menu-toggle, #adminmenu li.wp-has-current-submenu:hover .wp-menu-toggle { background: transparent url(../images/menu-bits.gif?ver=20100610) no-repeat scroll left -207px; } #adminmenu .wp-has-submenu:hover .wp-menu-toggle, #adminmenu .wp-menu-open .wp-menu-toggle { background: transparent url(../images/menu-bits.gif?ver=20100610) no-repeat scroll left -109px; } #adminmenu a.menu-top { background: #f1f1f1 url(../images/menu-bits.gif?ver=20100610) repeat-x scroll left -379px; } #adminmenu .wp-submenu a { background: #fff url(../images/menu-bits.gif?ver=20100610) no-repeat scroll 0 -310px; } #adminmenu .wp-has-current-submenu ul li a { background: none; } #adminmenu .wp-has-current-submenu ul li a.current { background: url(../images/menu-dark.gif) top left no-repeat !important; } .wp-has-current-submenu .wp-submenu { border-top: none !important; } #adminmenu li.wp-has-current-submenu a.wp-has-current-submenu { border-bottom: #aaa 1px solid; } #adminmenu li.wp-has-current-submenu a.wp-has-current-submenu, #adminmenu li.current a.menu-top { background: #e0e0e0 url(../images/menu-bits.gif?ver=20100610) top left repeat-x; border: #aaa 1px solid; color: #000; } #adminmenu li.wp-has-current-submenu .wp-submenu, #adminmenu li.wp-has-current-submenu ul li a { border-right-color: #aaa !important; border-left-color: #aaa !important; } #adminmenu li.wp-has-current-submenu ul li a { background: url(../images/menu-dark.gif) bottom left no-repeat !important; } #adminmenu li.wp-has-current-submenu ul { border-bottom-color: #aaa; } #adminmenu .wp-submenu .current a.current { background: transparent url(../images/menu-bits.gif?ver=20100610) no-repeat scroll 0 -289px; } #adminmenu .wp-submenu a:hover { background-color: #EAF2FA !important; color: #333 !important; } #adminmenu .wp-submenu li.current, #adminmenu .wp-submenu li.current a, #adminmenu .wp-submenu li.current a:hover { color: #333; background-color: #f5f5f5; background-image: none; border-color: #e3e3e3; } #adminmenu .wp-submenu ul { background-color: #fff; } .folded #adminmenu li.menu-top, #adminmenu .wp-submenu .wp-submenu-head { background-color: #F1F1F1; } .folded #adminmenu li.wp-has-current-submenu, .folded #adminmenu li.menu-top.current { background-color: #e6e6e6; } #adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head { background-color: #EAEAEA; border-color: #aaa; } #adminmenu div.wp-submenu { background-color: transparent; } /* menu icons */ #adminmenu .menu-icon-dashboard div.wp-menu-image { background: transparent url('../images/menu.png?ver=20100531') no-repeat scroll -61px -33px; } #adminmenu .menu-icon-dashboard:hover div.wp-menu-image, #adminmenu .menu-icon-dashboard.wp-has-current-submenu div.wp-menu-image, #adminmenu .menu-icon-dashboard.current div.wp-menu-image { background: transparent url('../images/menu.png?ver=20100531') no-repeat scroll -61px -1px; } #adminmenu .menu-icon-post div.wp-menu-image { background: transparent url('../images/menu.png?ver=20100531') no-repeat scroll -272px -33px; } #adminmenu .menu-icon-post:hover div.wp-menu-image, #adminmenu .menu-icon-post.wp-has-current-submenu div.wp-menu-image { background: transparent url('../images/menu.png?ver=20100531') no-repeat scroll -272px -1px; } #adminmenu .menu-icon-media div.wp-menu-image { background: transparent url('../images/menu.png?ver=20100531') no-repeat scroll -121px -33px; } #adminmenu .menu-icon-media:hover div.wp-menu-image, #adminmenu .menu-icon-media.wp-has-current-submenu div.wp-menu-image { background: transparent url('../images/menu.png?ver=20100531') no-repeat scroll -121px -1px; } #adminmenu .menu-icon-links div.wp-menu-image { background: transparent url('../images/menu.png?ver=20100531') no-repeat scroll -91px -33px; } #adminmenu .menu-icon-links:hover div.wp-menu-image, #adminmenu .menu-icon-links.wp-has-current-submenu div.wp-menu-image { background: transparent url('../images/menu.png?ver=20100531') no-repeat scroll -91px -1px; } #adminmenu .menu-icon-page div.wp-menu-image { background: transparent url('../images/menu.png?ver=20100531') no-repeat scroll -151px -33px; } #adminmenu .menu-icon-page:hover div.wp-menu-image, #adminmenu .menu-icon-page.wp-has-current-submenu div.wp-menu-image { background: transparent url('../images/menu.png?ver=20100531') no-repeat scroll -151px -1px; } #adminmenu .menu-icon-comments div.wp-menu-image { background: transparent url('../images/menu.png?ver=20100531') no-repeat scroll -31px -33px; } #adminmenu .menu-icon-comments:hover div.wp-menu-image, #adminmenu .menu-icon-comments.wp-has-current-submenu div.wp-menu-image, #adminmenu .menu-icon-comments.current div.wp-menu-image { background: transparent url('../images/menu.png?ver=20100531') no-repeat scroll -31px -1px; } #adminmenu .menu-icon-appearance div.wp-menu-image { background: transparent url('../images/menu.png?ver=20100531') no-repeat scroll -1px -33px; } #adminmenu .menu-icon-appearance:hover div.wp-menu-image, #adminmenu .menu-icon-appearance.wp-has-current-submenu div.wp-menu-image { background: transparent url('../images/menu.png?ver=20100531') no-repeat scroll -1px -1px; } #adminmenu .menu-icon-plugins div.wp-menu-image { background: transparent url('../images/menu.png?ver=20100531') no-repeat scroll -181px -33px; } #adminmenu .menu-icon-plugins:hover div.wp-menu-image, #adminmenu .menu-icon-plugins.wp-has-current-submenu div.wp-menu-image { background: transparent url('../images/menu.png?ver=20100531') no-repeat scroll -181px -1px; } #adminmenu .menu-icon-users div.wp-menu-image { background: transparent url('../images/menu.png?ver=20100531') no-repeat scroll -301px -33px; } #adminmenu .menu-icon-users:hover div.wp-menu-image, #adminmenu .menu-icon-users.wp-has-current-submenu div.wp-menu-image { background: transparent url('../images/menu.png?ver=20100531') no-repeat scroll -301px -1px; } #adminmenu .menu-icon-tools div.wp-menu-image { background: transparent url('../images/menu.png?ver=20100531') no-repeat scroll -211px -33px; } #adminmenu .menu-icon-tools:hover div.wp-menu-image, #adminmenu .menu-icon-tools.wp-has-current-submenu div.wp-menu-image { background: transparent url('../images/menu.png?ver=20100531') no-repeat scroll -211px -1px; } #adminmenu .menu-icon-settings div.wp-menu-image { background: transparent url('../images/menu.png?ver=20100531') no-repeat scroll -241px -33px; } #adminmenu .menu-icon-settings:hover div.wp-menu-image, #adminmenu .menu-icon-settings.wp-has-current-submenu div.wp-menu-image { background: transparent url('../images/menu.png?ver=20100531') no-repeat scroll -241px -1px; } #adminmenu .menu-icon-site div.wp-menu-image { background: transparent url('../images/menu.png?ver=20100531') no-repeat scroll -361px -33px; } #adminmenu .menu-icon-site:hover div.wp-menu-image, #adminmenu .menu-icon-site.wp-has-current-submenu div.wp-menu-image { background: transparent url('../images/menu.png?ver=20100531') no-repeat scroll -361px -1px; } /* end menu */ /* Diff */ table.diff .diff-deletedline { background-color: #fdd; } table.diff .diff-deletedline del { background-color: #f99; } table.diff .diff-addedline { background-color: #dfd; } table.diff .diff-addedline ins { background-color: #9f9; } #att-info { background-color: #E4F2FD; } /* edit image */ #sidemenu a { background-color: #f9f9f9; border-color: #f9f9f9; border-bottom-color: #dfdfdf; } #sidemenu a.current { background-color: #fff; border-color: #dfdfdf #dfdfdf #fff; color: #D54E21; } #screen-options-wrap, #contextual-help-wrap { background-color: #f1f1f1; border-color: #dfdfdf; } #screen-meta-links a.show-settings { color: #606060; } #screen-meta-links a.show-settings:hover { color: #000; } #replysubmit { background-color: #f1f1f1; border-top-color: #ddd; } #replyerror { border-color: #ddd; background-color: #f9f9f9; } #edithead, #replyhead { background-color: #f1f1f1; } #ed_reply_toolbar { background-color: #e9e9e9; } /* table vim shortcuts */ .vim-current, .vim-current th, .vim-current td { background-color: #E4F2FD !important; } /* Install Plugins */ .star-average, .star.star-rating { background-color: #fc0; } div.star.select:hover { background-color: #d00; } #plugin-information .fyi ul { background-color: #eaf3fa; } #plugin-information .fyi h2.mainheader { background-color: #cee1ef; } #plugin-information pre, #plugin-information code { background-color: #ededff; } #plugin-information pre { border: 1px solid #ccc; } /* inline editor */ .inline-edit-row fieldset input[type="text"], .inline-edit-row fieldset textarea, #bulk-titles, #replyrow input { border-color: #ddd; } .inline-editor div.title { background-color: #EAF3FA; } .inline-editor ul.cat-checklist { background-color: #fff; border-color: #ddd; } .inline-editor .categories .catshow, .inline-editor .categories .cathide { color: #21759b; } .inline-editor .quick-edit-save { background-color: #f1f1f1; } #replyrow #ed_reply_toolbar input:hover { border-color: #aaa; background: #ddd; } fieldset.inline-edit-col-right .inline-edit-col { border-color: #dfdfdf; } .attention { color: #D54E21; } .meta-box-sortables .postbox:hover .handlediv { background: transparent url(../images/menu-bits.gif?ver=20100610) no-repeat scroll left -111px; } #major-publishing-actions { background: #eaf2fa; } .tablenav .tablenav-pages { color: #555; } .tablenav .tablenav-pages a { border-color: #e3e3e3; background: #eee url('../images/menu-bits.gif?ver=20100610') repeat-x scroll left -379px; } .tablenav .tablenav-pages a:hover, .tablenav .tablenav-pages a:focus { color: #d54e21; } .tablenav .tablenav-pages a.disabled, .tablenav .tablenav-pages a.disabled:hover, .tablenav .tablenav-pages a.disabled:focus { color: #aaa; } .tablenav .tablenav-pages .current { background: #dfdfdf; border-color: #d3d3d3; } #availablethemes, #availablethemes td { border-color: #ddd; } #current-theme img { border-color: #999; } #TB_window #TB_title a.tb-theme-preview-link, #TB_window #TB_title a.tb-theme-preview-link:visited { color: #999; } #TB_window #TB_title a.tb-theme-preview-link:hover, #TB_window #TB_title a.tb-theme-preview-link:focus { color: #ccc; } .misc-pub-section { border-bottom-color: #eee; } #minor-publishing { border-bottom-color: #ddd; } #post-body .misc-pub-section { border-right-color: #eee; } .post-com-count span { background-color: #bbb; } .form-table .color-palette td { border-color: #fff; } .sortable-placeholder { border-color: #bbb; background-color: #f5f5f5; } #post-body ul.category-tabs li.tabs a, #post-body ul.add-menu-item-tabs li.tabs a, body.press-this ul.category-tabs li.tabs a { color: #333; } #wp_editimgbtn, #wp_delimgbtn, #wp_editgallery, #wp_delgallery { border-color: #999; background-color: #eee; } #wp_editimgbtn:hover, #wp_delimgbtn:hover, #wp_editgallery:hover, #wp_delgallery:hover { border-color: #555; background-color: #ccc; } #favorite-first { border-color: #c0c0c0; background: #f1f1f1; /* fallback color */ background:-moz-linear-gradient(bottom, #e7e7e7, #fff); background:-webkit-gradient(linear, left bottom, left top, from(#e7e7e7), to(#fff)); } #favorite-inside { border-color: #c0c0c0; background-color: #fff; } #favorite-toggle { background: transparent url(../images/fav-arrow.gif?ver=20100531) no-repeat 0 -4px; } #favorite-actions a { color: #464646; } #favorite-actions a:hover { color: #000; } #favorite-inside a:hover { text-decoration: underline; } #screen-meta a.show-settings, .toggle-arrow { background-image:url("../images/screen-options-toggle.gif?ver=20100531"); } #icon-edit, #icon-post { background: transparent url(../images/icons32.png?ver=20100531) no-repeat -552px -5px; } #icon-index { background: transparent url(../images/icons32.png?ver=20100531) no-repeat -137px -5px; } #icon-upload { background: transparent url(../images/icons32.png?ver=20100531) no-repeat -251px -5px; } #icon-link-manager, #icon-link, #icon-link-category { background: transparent url(../images/icons32.png?ver=20100531) no-repeat -190px -5px; } #icon-edit-pages, #icon-page { background: transparent url(../images/icons32.png?ver=20100531) no-repeat -312px -5px; } #icon-edit-comments { background: transparent url(../images/icons32.png?ver=20100531) no-repeat -72px -5px; } #icon-themes { background: transparent url(../images/icons32.png?ver=20100531) no-repeat -11px -5px; } #icon-plugins { background: transparent url(../images/icons32.png?ver=20100531) no-repeat -370px -5px; } #icon-users, #icon-profile, #icon-user-edit { background: transparent url(../images/icons32.png?ver=20100531) no-repeat -600px -5px; } #icon-tools, #icon-admin { background: transparent url(../images/icons32.png?ver=20100531) no-repeat -432px -5px; } #icon-options-general { background: transparent url(../images/icons32.png?ver=20100531) no-repeat -492px -5px; } #icon-ms-admin { background: transparent url(../images/icons32.png?ver=20100531) no-repeat -659px -5px; } .view-switch #view-switch-list { background: transparent url(../images/list.png) no-repeat 0 0; } .view-switch .current #view-switch-list { background: transparent url(../images/list.png) no-repeat -40px 0; } .view-switch #view-switch-excerpt { background: transparent url(../images/list.png) no-repeat -20px 0; } .view-switch .current #view-switch-excerpt { background: transparent url(../images/list.png) no-repeat -60px 0; } #header-logo { background: transparent url(../images/wp-logo.png?ver=20100531) no-repeat scroll center center; } .popular-tags, .feature-filter { background-color: #fff; border-color: #DFDFDF; } #theme-information .action-button { border-top-color: #DFDFDF; } .theme-listing br.line { border-bottom-color: #ccc; } div.widgets-sortables, #widgets-left .inactive { background-color: #f1f1f1; border-color: #ddd; } #available-widgets .widget-holder { background-color: #fff; border-color: #ddd; } #widgets-left .sidebar-name { background-color: #aaa; background-image: url(../images/ed-bg.gif); text-shadow: #fff 0 1px 0; border-color: #dfdfdf; } #widgets-right .sidebar-name { background-image: url(../images/fav.png); text-shadow: #3f3f3f 0 -1px 0; background-color: #636363; border-color: #636363; color: #fff; } .sidebar-name:hover, #removing-widget { color: #d54e21; } #removing-widget span { color: black; } #widgets-left .sidebar-name-arrow { background: transparent url(../images/menu-bits.gif?ver=20100610) no-repeat scroll left -109px; } #widgets-right .sidebar-name-arrow { background: transparent url(../images/widgets-arrow.gif?ver=20100531) no-repeat scroll 0 -1px; } .in-widget-title { color: #606060; } .deleting .widget-title * { color: #aaa; } .imgedit-menu div { border-color: #d5d5d5; background-color: #f1f1f1; } .imgedit-menu div:hover { border-color: #c1c1c1; background-color: #eaeaea; } .imgedit-menu div.disabled { border-color: #ccc; background-color: #ddd; filter: alpha(opacity=50); opacity: 0.5; } #dashboard_recent_comments div.undo { border-top-color: #dfdfdf; } .comment-ays, .comment-ays th { border-color: #ddd; } .comment-ays th { background-color: #f1f1f1; } #nav-menu-header, #nav-menu-footer, .menu-item-handle { background: url("../images/gray-grad.png") repeat-x scroll left top #dfdfdf; } #menu-management .nav-tab-active { background: #ececec; border-bottom-color: #ececec; } wp-admin/css/dashboard-rtl.css0000644002347300047320000000400111656660274016160 0ustar vonfabpsacln#dashboard-widgets-wrap .has-sidebar{margin-right:0;margin-left:-51%;}#dashboard-widgets-wrap .has-sidebar .has-sidebar-content{margin-right:0;margin-left:51%;}.view-all{right:auto;left:0;}#dashboard_right_now p.sub,#dashboard-widgets h4,#dashboard_quick_press h4,a.rsswidget,#dashboard_plugins h4,#dashboard_plugins h5,#dashboard_recent_comments .comment-meta .approve{font-family:Tahoma,Arial;}#dashboard_right_now p.sub{font-style:normal;left:auto;right:15px;}#dashboard_right_now td.b{padding-right:0;padding-left:6px;text-align:left;font-family:Tahoma,Arial;}#dashboard_right_now .t{padding-right:0;padding-left:12px;}#dashboard_right_now .table_content{float:right;}#dashboard_right_now .table_discussion{float:left;}#dashboard_right_now .versions a{font-family:Tahoma,Arial;}#dashboard_right_now a.button{float:left;clear:left;}#dashboard-widgets h3 .postbox-title-action{right:auto;left:30px;}#the-comment-list .pingback{padding-left:0!important;padding-right:9px!important;}#the-comment-list .comment-item{padding:1em 70px 1em 10px;}#the-comment-list .comment-item .avatar{float:right;margin-left:0;margin-right:-60px;}.rss-widget cite{text-align:left;}.rss-widget span.rss-date{font-family:Tahoma,Arial;margin-left:0;margin-right:3px;}#dashboard_quick_press h4{float:right;text-align:left;}#dashboard_quick_press h4 label{margin-right:0;margin-left:10px;}#dashboard_quick_press .input-text-wrap,#dashboard_quick_press .textarea-wrap{margin:0 5em 1em 0;}#dashboard_quick_press #media-buttons{margin:0 5em .5em 0;padding:0 10px 0 0;}#dashboard-widgets #dashboard_quick_press form p.submit{margin-left:0;margin-right:4.6em;}#dashboard-widgets #dashboard_quick_press form p.submit input{float:right;}#dashboard-widgets #dashboard_quick_press form p.submit #save-post{margin:0 10px 0 1em;}#dashboard-widgets #dashboard_quick_press form p.submit #publish{float:left;}#dashboard-widgets #dashboard_quick_press form p.submit img.waiting{margin:4px 0 0 6px;}#dashboard_recent_drafts h4 abbr{font-family:Tahoma,Arial;margin-left:0;margin-right:3px;}wp-admin/css/dashboard-rtl.dev.css0000644002347300047320000000446411656660274016752 0ustar vonfabpsacln#dashboard-widgets-wrap .has-sidebar { margin-right: 0; margin-left: -51%; } #dashboard-widgets-wrap .has-sidebar .has-sidebar-content { margin-right: 0; margin-left: 51%; } .view-all { right: auto; left: 0; } #dashboard_right_now p.sub, #dashboard-widgets h4, #dashboard_quick_press h4, a.rsswidget, #dashboard_plugins h4, #dashboard_plugins h5, #dashboard_recent_comments .comment-meta .approve { font-family: Tahoma, Arial; } #dashboard_right_now p.sub { font-style:normal; left:auto; right:15px; } #dashboard_right_now td.b { padding-right: 0; padding-left: 6px; text-align: left; font-family: Tahoma, Arial; } #dashboard_right_now .t { padding-right: 0; padding-left: 12px; } #dashboard_right_now .table_content { float:right; } #dashboard_right_now .table_discussion { float:left; } #dashboard_right_now .versions a { font-family: Tahoma, Arial; } #dashboard_right_now a.button { float: left; clear: left; } #dashboard-widgets h3 .postbox-title-action { right: auto; left: 30px; } #the-comment-list .pingback { padding-left: 0 !important; padding-right: 9px !important; } /* Recent Comments */ #the-comment-list .comment-item { padding: 1em 70px 1em 10px; } #the-comment-list .comment-item .avatar { float: right; margin-left: 0; margin-right: -60px; } /* Feeds */ .rss-widget cite { text-align: left; } .rss-widget span.rss-date { font-family: Tahoma, Arial; margin-left: 0; margin-right: 3px; } /* QuickPress */ #dashboard_quick_press h4 { float: right; text-align: left; } #dashboard_quick_press h4 label { margin-right: 0; margin-left: 10px; } #dashboard_quick_press .input-text-wrap, #dashboard_quick_press .textarea-wrap { margin: 0 5em 1em 0; } #dashboard_quick_press #media-buttons { margin: 0 5em .5em 0; padding: 0 10px 0 0; } #dashboard-widgets #dashboard_quick_press form p.submit { margin-left: 0; margin-right: 4.6em; } #dashboard-widgets #dashboard_quick_press form p.submit input { float: right; } #dashboard-widgets #dashboard_quick_press form p.submit #save-post { margin: 0 10px 0 1em; } #dashboard-widgets #dashboard_quick_press form p.submit #publish { float: left; } #dashboard-widgets #dashboard_quick_press form p.submit img.waiting { margin: 4px 0 0 6px; } /* Recent Drafts */ #dashboard_recent_drafts h4 abbr { font-family: Tahoma, Arial; margin-left:0; margin-right: 3px; }wp-admin/css/dashboard.css0000644002347300047320000001366611656660274015402 0ustar vonfabpsacln.postbox p,.postbox ul,.postbox ol,.postbox blockquote,#wp-version-message{font-size:11px;}.edit-box{display:none;}h3:hover .edit-box{display:inline;}form .input-text-wrap{border-style:solid;border-width:1px;padding:2px 3px;border-color:#ccc;}#dashboard-widgets form .input-text-wrap input{border:0 none;outline:none;margin:0;padding:0;width:99%;color:#333;}form .textarea-wrap{border-style:solid;border-width:1px;padding:2px;border-color:#ccc;}#dashboard-widgets form .textarea-wrap textarea{border:0 none;padding:0;outline:none;width:99%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;}#dashboard-widgets .postbox form .submit{float:none;margin:.5em 0 0;padding:0;border:none;}#dashboard-widgets-wrap #dashboard-widgets .postbox form .submit input{margin:0;}#dashboard-widgets-wrap #dashboard-widgets .postbox form .submit #publish{min-width:0;}div.postbox div.inside{margin:10px;position:relative;}#dashboard-widgets a{text-decoration:none;}#dashboard-widgets h3 a{text-decoration:underline;}#dashboard-widgets h3 .postbox-title-action{position:absolute;right:30px;padding:0;}#dashboard-widgets h4{font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif;font-size:13px;margin:0 0 .2em;padding:0;}#dashboard_right_now p.sub,#dashboard_right_now .table,#dashboard_right_now .versions{margin:-12px;}#dashboard_right_now .inside{font-size:12px;padding-top:20px;}#dashboard_right_now p.sub{font-style:italic;font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif;padding:5px 10px 15px;color:#777;font-size:13px;position:absolute;top:-17px;left:15px;}#dashboard_right_now .table{margin:0 -9px;padding:0 10px;position:relative;}#dashboard_right_now .table_content{float:left;border-top:#ececec 1px solid;width:45%;}#dashboard_right_now .table_discussion{float:right;border-top:#ececec 1px solid;width:45%;}#dashboard_right_now table td{padding:3px 0;white-space:nowrap;}#dashboard_right_now table tr.first td{border-top:none;}#dashboard_right_now td.b{padding-right:6px;text-align:right;font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif;font-size:14px;width:1%;}#dashboard_right_now td.b a{font-size:18px;}#dashboard_right_now td.b a:hover{color:#d54e21;}#dashboard_right_now .t{font-size:12px;padding-right:12px;padding-top:6px;color:#777;}#dashboard_right_now .t a{white-space:nowrap;}#dashboard_right_now .spam{color:red;}#dashboard_right_now .waiting{color:#e66f00;}#dashboard_right_now .approved{color:green;}#dashboard_right_now .versions{padding:6px 10px 12px;clear:both;}#dashboard_right_now .versions .b{font-weight:bold;}#dashboard_right_now a.button{float:right;clear:right;position:relative;top:-5px;}#dashboard_recent_comments h3{margin-bottom:0;}#dashboard_recent_comments .inside{margin-top:0;}#dashboard_recent_comments .comment-meta .approve{font-style:italic;font-family:"Lucida Grande",Verdana,Arial,"Bitstream Vera Sans",sans-serif;font-size:10px;}#the-comment-list{position:relative;}#the-comment-list .comment-item{padding:1em 10px;border-top:1px solid;}#the-comment-list .pingback{padding-left:9px!important;}#the-comment-list .comment-item,#the-comment-list #replyrow{margin:0 -10px;}#the-comment-list .comment-item:first-child{border-top:none;}#the-comment-list .comment-item .avatar{float:left;margin:0 10px 5px 0;}#the-comment-list .comment-item h4{line-height:1.4;margin-top:-.2em;font-weight:normal;color:#999;}#the-comment-list .comment-item h4 cite{font-style:normal;font-weight:normal;}#the-comment-list .comment-item blockquote,#the-comment-list .comment-item blockquote p{margin:0;padding:0;display:inline;}#dashboard_recent_comments #the-comment-list .trackback blockquote,#dashboard_recent_comments #the-comment-list .pingback blockquote{display:block;}#the-comment-list .comment-item p.row-actions{margin:3px 0 0;padding:0;font-size:10px;}#dashboard_quick_press h4{font-family:"Lucida Grande",Verdana,Arial,"Bitstream Vera Sans",sans-serif;float:left;width:5.5em;clear:both;font-weight:normal;text-align:right;padding-top:5px;font-size:12px;}#dashboard_quick_press h4 label{margin-right:10px;}#dashboard_quick_press{min-height:200px;}#dashboard_quick_press.closed{min-height:0;}#dashboard_quick_press .input-text-wrap,#dashboard_quick_press .textarea-wrap{margin:0 0 1em 5em;}#dashboard_quick_press #media-buttons{margin:0 0 .5em 5em;padding:0 0 0 10px;font-size:11px;}#dashboard_quick_press #media-buttons a{vertical-align:bottom;}#dashboard-widgets #dashboard_quick_press form p.submit{margin-left:4.6em;}#dashboard-widgets #dashboard_quick_press form p.submit input{float:left;}#dashboard-widgets #dashboard_quick_press form p.submit #save-post{margin:0 1em 0 10px;}#dashboard-widgets #dashboard_quick_press form p.submit #publish{float:right;}#dashboard-widgets #dashboard_quick_press form p.submit img.waiting{vertical-align:middle;visibility:hidden;margin:4px 6px 0 0;}#dashboard_recent_drafts ul{margin:0;padding:0;list-style:none;}#dashboard_recent_drafts ul li{margin-bottom:.6em;}#dashboard_recent_drafts h4{font-weight:normal;}#dashboard_recent_drafts h4 abbr{font-family:"Lucida Grande",Verdana,Arial,"Bitstream Vera Sans",sans-serif;font-size:11px;color:#999;margin-left:3px;}#dashboard_recent_drafts p{margin:0;padding:0;}.rss-widget ul{margin:0;padding:0;list-style:none;}a.rsswidget{font-size:13px;font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif;line-height:1.7em;}.rss-widget ul li{line-height:1.5em;margin-bottom:12px;}.rss-widget span.rss-date{margin-left:3px;}.rss-widget cite{display:block;text-align:right;margin:0 0 1em;padding:0;}.rss-widget cite:before{content:'\2014';}#dashboard_plugins h4{font-family:"Lucida Grande",Verdana,Arial,"Bitstream Vera Sans",sans-serif;}#dashboard_plugins h5{font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif;font-size:13px!important;margin:0;display:inline;line-height:1.4em;}#dashboard_plugins h5 a{font-weight:normal;line-height:1.7em;}#dashboard_plugins p{margin:0 0 1.4em;line-height:1.4em;}.dashboard-comment-wrap{overflow:hidden;word-wrap:break-word;}wp-admin/css/dashboard.dev.css0000644002347300047320000001560311656660275016151 0ustar vonfabpsacln.postbox p, .postbox ul, .postbox ol, .postbox blockquote, #wp-version-message { font-size: 11px; } .edit-box { display: none; } h3:hover .edit-box { display: inline; } form .input-text-wrap { border-style: solid; border-width: 1px; padding: 2px 3px; border-color: #ccc; } #dashboard-widgets form .input-text-wrap input { border: 0 none; outline: none; margin: 0; padding: 0; width: 99%; color: #333; } form .textarea-wrap { border-style: solid; border-width: 1px; padding: 2px; border-color: #ccc; } #dashboard-widgets form .textarea-wrap textarea { border: 0 none; padding: 0; outline: none; width: 99%; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; } #dashboard-widgets .postbox form .submit { float: none; margin: .5em 0 0; padding: 0; border: none; } #dashboard-widgets-wrap #dashboard-widgets .postbox form .submit input { margin: 0; } #dashboard-widgets-wrap #dashboard-widgets .postbox form .submit #publish { min-width: 0; } div.postbox div.inside { margin: 10px; position: relative; } #dashboard-widgets a { text-decoration: none; } #dashboard-widgets h3 a { text-decoration: underline; } #dashboard-widgets h3 .postbox-title-action { position: absolute; right: 30px; padding: 0; } #dashboard-widgets h4 { font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif; font-size: 13px; margin: 0 0 .2em; padding: 0; } /* Right Now */ #dashboard_right_now p.sub, #dashboard_right_now .table, #dashboard_right_now .versions { margin: -12px; } #dashboard_right_now .inside { font-size: 12px; padding-top: 20px; } #dashboard_right_now p.sub { font-style: italic; font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif; padding: 5px 10px 15px; color: #777; font-size: 13px; position: absolute; top: -17px; left: 15px; } #dashboard_right_now .table { margin: 0 -9px; padding: 0 10px; position: relative; } #dashboard_right_now .table_content { float: left; border-top: #ececec 1px solid; width: 45%; } #dashboard_right_now .table_discussion { float: right; border-top: #ececec 1px solid; width: 45%; } #dashboard_right_now table td { padding: 3px 0; white-space: nowrap; } #dashboard_right_now table tr.first td { border-top: none; } #dashboard_right_now td.b { padding-right: 6px; text-align: right; font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif; font-size: 14px; width: 1%; } #dashboard_right_now td.b a { font-size: 18px; } #dashboard_right_now td.b a:hover { color: #d54e21; } #dashboard_right_now .t { font-size: 12px; padding-right: 12px; padding-top: 6px; color: #777; } #dashboard_right_now .t a { white-space: nowrap; } #dashboard_right_now .spam { color: red; } #dashboard_right_now .waiting { color: #e66f00; } #dashboard_right_now .approved { color: green; } #dashboard_right_now .versions { padding: 6px 10px 12px; clear: both; } #dashboard_right_now .versions .b { font-weight: bold; } #dashboard_right_now a.button { float: right; clear: right; position: relative; top: -5px; } /* Recent Comments */ #dashboard_recent_comments h3 { margin-bottom: 0; } #dashboard_recent_comments .inside { margin-top: 0; } #dashboard_recent_comments .comment-meta .approve { font-style: italic; font-family: "Lucida Grande", Verdana, Arial, "Bitstream Vera Sans", sans-serif; font-size: 10px; } #the-comment-list { position: relative; } #the-comment-list .comment-item { padding: 1em 10px; border-top: 1px solid; } #the-comment-list .pingback { padding-left: 9px !important; } #the-comment-list .comment-item, #the-comment-list #replyrow { margin: 0 -10px; } #the-comment-list .comment-item:first-child { border-top: none; } #the-comment-list .comment-item .avatar { float: left; margin: 0 10px 5px 0; } #the-comment-list .comment-item h4 { line-height: 1.4; margin-top: -.2em; font-weight: normal; color: #999; } #the-comment-list .comment-item h4 cite { font-style: normal; font-weight: normal; } #the-comment-list .comment-item blockquote, #the-comment-list .comment-item blockquote p { margin: 0; padding: 0; display: inline; } #dashboard_recent_comments #the-comment-list .trackback blockquote, #dashboard_recent_comments #the-comment-list .pingback blockquote { display: block; } #the-comment-list .comment-item p.row-actions { margin: 3px 0 0; padding: 0; font-size: 10px; } /* QuickPress */ #dashboard_quick_press h4 { font-family: "Lucida Grande", Verdana, Arial, "Bitstream Vera Sans", sans-serif; float: left; width: 5.5em; clear: both; font-weight: normal; text-align: right; padding-top: 5px; font-size: 12px; } #dashboard_quick_press h4 label { margin-right: 10px; } #dashboard_quick_press { min-height: 200px; } #dashboard_quick_press.closed { min-height: 0; } #dashboard_quick_press .input-text-wrap, #dashboard_quick_press .textarea-wrap { margin: 0 0 1em 5em; } #dashboard_quick_press #media-buttons { margin: 0 0 .5em 5em; padding: 0 0 0 10px; font-size: 11px; } #dashboard_quick_press #media-buttons a { vertical-align: bottom; } #dashboard-widgets #dashboard_quick_press form p.submit { margin-left: 4.6em; } #dashboard-widgets #dashboard_quick_press form p.submit input { float: left; } #dashboard-widgets #dashboard_quick_press form p.submit #save-post { margin: 0 1em 0 10px; } #dashboard-widgets #dashboard_quick_press form p.submit #publish { float: right; } #dashboard-widgets #dashboard_quick_press form p.submit img.waiting { vertical-align: middle; visibility: hidden; margin: 4px 6px 0 0; } /* Recent Drafts */ #dashboard_recent_drafts ul { margin: 0; padding: 0; list-style: none; } #dashboard_recent_drafts ul li { margin-bottom: 0.6em; } #dashboard_recent_drafts h4 { font-weight: normal; } #dashboard_recent_drafts h4 abbr { font-family: "Lucida Grande", Verdana, Arial, "Bitstream Vera Sans", sans-serif; font-size: 11px; color: #999; margin-left: 3px; } #dashboard_recent_drafts p { margin: 0; padding: 0; } /* Feeds */ .rss-widget ul { margin: 0; padding: 0; list-style: none; } a.rsswidget { font-size: 13px; font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif; line-height: 1.7em; } .rss-widget ul li { line-height: 1.5em; margin-bottom: 12px; } .rss-widget span.rss-date { margin-left: 3px; } .rss-widget cite { display: block; text-align: right; margin: 0 0 1em; padding: 0; } .rss-widget cite:before { content: '\2014'; } /* Plugins */ #dashboard_plugins h4 { font-family: "Lucida Grande", Verdana, Arial, "Bitstream Vera Sans", sans-serif; } #dashboard_plugins h5 { font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif; font-size: 13px !important; margin: 0; display: inline; line-height: 1.4em; } #dashboard_plugins h5 a { font-weight: normal; line-height: 1.7em; } #dashboard_plugins p { margin: 0 0 1.4em; line-height: 1.4em; } .dashboard-comment-wrap { overflow: hidden; word-wrap: break-word; } wp-admin/css/farbtastic-rtl.css0000644002347300047320000000016511656660275016363 0ustar vonfabpsacln.farbtastic .color, .farbtastic .overlay { left: 0; right: 47px; } .farbtastic .marker { margin: -8px -8px 0 0; } wp-admin/css/farbtastic.css0000644002347300047320000000113311656660275015560 0ustar vonfabpsacln.farbtastic { position: relative; } .farbtastic * { position: absolute; cursor: crosshair; } .farbtastic, .farbtastic .wheel { width: 195px; height: 195px; } .farbtastic .color, .farbtastic .overlay { top: 47px; left: 47px; width: 101px; height: 101px; } .farbtastic .wheel { background: url(../images/wheel.png) no-repeat; width: 195px; height: 195px; } .farbtastic .overlay { background: url(../images/mask.png) no-repeat; } .farbtastic .marker { width: 17px; height: 17px; margin: -8px 0 0 -8px; overflow: hidden; background: url(../images/marker.png) no-repeat; }wp-admin/css/global-rtl.css0000644002347300047320000000162211656660275015500 0ustar vonfabpsacln#adminmenu{float:right;clear:right;margin-right:-160px;margin-left:5px;}body.folded #adminmenu{margin-left:0;margin-right:-45px;}.inner-sidebar{float:left;clear:left;}.has-right-sidebar #post-body{clear:right;float:right;margin-right:0;margin-left:-340px;}.has-right-sidebar #post-body-content{margin-left:300px;margin-right:0;}#wpbody{margin-left:0;margin-right:175px;}.folded #wpbody{margin-left:0;margin-right:60px;}#wpbody-content{float:right;}#col-right{float:left;clear:left;}.wrap{margin:0 5px 0 15px;}body,td,textarea,input,select{font-family:Tahoma,arial;}.alignleft{float:right;}.alignright{float:left;}.subsubsub{float:right;}.widefat th{text-align:right;}.widefat th input{margin:0 8px 0 0;}.wrap h2{font-family:arial;padding:14px 0 3px 15px;font-style:normal;}.wrap h2.long-header{padding-left:0;}.updated,.error{clear:both;}.screen-reader-text,.screen-reader-text span{left:auto;text-indent:-1000em;}wp-admin/css/global-rtl.dev.css0000644002347300047320000000232311656660276016255 0ustar vonfabpsacln/* 2 column liquid layout */ #adminmenu { float: right; clear: right; margin-right:-160px; margin-left: 5px; } body.folded #adminmenu { margin-left: 0; margin-right: -45px; } /* inner 2 column liquid layout */ .inner-sidebar { float: left; clear: left; } .has-right-sidebar #post-body { clear:right; float:right; margin-right:0; margin-left:-340px; } .has-right-sidebar #post-body-content { margin-left: 300px; margin-right:0; } #wpbody { margin-left:0; margin-right: 175px; } .folded #wpbody { margin-left: 0; margin-right: 60px; } #wpbody-content { float: right; } /* 2 columns main area */ #col-right { float: left; clear: left; } .wrap { margin: 0 5px 0 15px; } /* styles for use by people extending the WordPress interface */ body, td, textarea, input, select { font-family: Tahoma, arial; } .alignleft { float: right; } .alignright { float: left; } .subsubsub { float: right; } .widefat th { text-align: right; } .widefat th input { margin: 0 8px 0 0; } .wrap h2 { font-family: arial; padding: 14px 0 3px 15px; font-style: normal; } .wrap h2.long-header { padding-left: 0; } .updated, .error { clear: both; } .screen-reader-text, .screen-reader-text span { left:auto; text-indent:-1000em; }wp-admin/css/global.css0000644002347300047320000001271411656660276014706 0ustar vonfabpsaclnhtml,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td{margin:0;padding:0;border:0;outline:0;background:transparent;}body{line-height:1;}ol,ul{list-style:none;}blockquote,q{quotes:none;}blockquote:before,blockquote:after,q:before,q:after{content:'';content:none;}ins{text-decoration:none;}del{text-decoration:line-through;}#wpwrap{height:auto;min-height:100%;width:100%;}#wpcontent{height:100%;padding-bottom:50px;}#wpbody{clear:both;margin-left:175px;}.folded #wpbody{margin-left:60px;}#wpbody-content{float:left;width:100%;}#adminmenu{float:left;clear:left;width:145px;margin-top:15px;margin-right:5px;margin-bottom:15px;margin-left:-160px;position:relative;padding:0;list-style:none;}.folded #adminmenu{margin-left:-45px;}.folded #adminmenu,.folded #adminmenu li.menu-top{width:28px;}#footer{clear:both;position:relative;width:100%;}.inner-sidebar{float:right;clear:right;display:none;width:281px;position:relative;}.inner-sidebar #side-sortables{width:280px;min-height:300px;}.has-right-sidebar .inner-sidebar{display:block;}.has-right-sidebar #post-body{float:left;clear:left;width:100%;margin-right:-340px;}.has-right-sidebar #post-body-content{margin-right:300px;}#col-container{overflow:hidden;padding:0;margin:0;}#col-left{padding:0;margin:0;overflow:hidden;width:39%;}#col-right{float:right;clear:right;overflow:hidden;padding:0;margin:0;width:59%;}.alignleft{float:left;}.alignright{float:right;}.textleft{text-align:left;}.textright{text-align:right;}.clear{clear:both;}.screen-reader-text,.screen-reader-text span{position:absolute;left:-1000em;height:1px;width:1px;overflow:hidden;}.hidden,.js .closed .inside,.js .hide-if-js,.no-js .hide-if-no-js{display:none;}input[type="text"],input[type="password"],textarea{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;}input[type="checkbox"],input[type="radio"]{vertical-align:middle;}html,body{height:100%;}body,td,textarea,input,select{font-family:"Lucida Grande",Verdana,Arial,"Bitstream Vera Sans",sans-serif;font-size:13px;}body,textarea{line-height:1.4em;}input,select{line-height:15px;}p{margin:1em 0;}blockquote{margin:1em;}label{cursor:pointer;}li,dd{margin-bottom:6px;}p,li,dl,dd,dt{line-height:140%;}textarea,input,select{margin:1px;padding:3px;}h1{display:block;font-size:2em;font-weight:bold;margin:.67em 0;}h2{display:block;font-size:1.5em;font-weight:bold;margin:.83em 0;}h3{display:block;font-size:1.17em;font-weight:bold;margin:1em 0;}h4{display:block;font-size:1em;font-weight:bold;margin:1.33em 0;}h5{display:block;font-size:.83em;font-weight:bold;margin:1.67em 0;}h6{display:block;font-size:.67em;font-weight:bold;margin:2.33em 0;}ul.ul-disc{list-style:disc outside;}ul.ul-square{list-style:square outside;}ol.ol-decimal{list-style:decimal outside;}ul.ul-disc,ul.ul-square,ol.ol-decimal{margin-left:1.8em;}ul.ul-disc>li,ul.ul-square>li,ol.ol-decimal>li{margin:0 0 .5em;}.subsubsub{list-style:none;margin:8px 0 5px;padding:0;white-space:nowrap;font-size:11px;float:left;}.subsubsub a{line-height:2;padding:.2em;text-decoration:none;}.subsubsub a .count,.subsubsub a.current .count{color:#999;font-weight:normal;}.subsubsub a.current{font-weight:bold;background:none;border:none;}.subsubsub li{display:inline;margin:0;padding:0;}.widefat{border-width:1px;border-style:solid;border-spacing:0;width:100%;clear:both;margin:0;-moz-border-radius:4px;-khtml-border-radius:4px;-webkit-border-radius:4px;border-radius:4px;}.widefat *{word-wrap:break-word;}.widefat a{text-decoration:none;}.widefat thead th:first-of-type{-moz-border-radius-topleft:3px;-khtml-border-top-left-radius:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;}.widefat thead th:last-of-type{-moz-border-radius-topright:3px;-khtml-border-top-right-radius:3px;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;}.widefat tfoot th:first-of-type{-moz-border-radius-bottomleft:3px;-khtml-border-bottom-left-radius:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;}.widefat tfoot th:last-of-type{-moz-border-radius-bottomright:3px;-khtml-border-bottom-right-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;}.widefat td,.widefat th{border-bottom-width:1px;border-bottom-style:solid;font-size:11px;}.widefat .no-items td{border-bottom-width:0;}.widefat td{padding:3px 7px;vertical-align:top;}.widefat td p,.widefat td ol,.widefat td ul{font-size:11px;}.widefat th{padding:7px 7px 8px;text-align:left;line-height:1.3em;}.widefat th input{margin:0 0 0 8px;padding:0;vertical-align:text-top;}.widefat .check-column{width:2.2em;padding:0;}.widefat tbody th.check-column{padding:7px 0 22px;vertical-align:top;}.widefat .num,.column-comments,.column-links,.column-posts{text-align:center;}.widefat th#comments{vertical-align:middle;}.wrap{margin:0 15px 0 5px;}div.updated,div.error{border-width:1px;border-style:solid;padding:0 .6em;margin:5px 15px 2px;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;}div.updated p,div.error p{margin:.5em 0;padding:2px;}.wrap div.updated,.wrap div.error{margin:5px 0 15px;}.wrap h2{font:italic normal normal 24px/29px Georgia,"Times New Roman","Bitstream Charter",Times,serif;margin:0;padding:14px 15px 3px 0;line-height:35px;text-shadow:rgba(255,255,255,1) 0 1px 0;}.wrap h2.long-header{padding-right:0;}wp-admin/css/global.dev.css0000644002347300047320000001626511656660276015470 0ustar vonfabpsacln/* http://meyerweb.com/eric/tools/css/reset/ */ /* v1.0 | 20080212 */ html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td { margin: 0; padding: 0; border: 0; outline: 0; /* font-size: 100%; vertical-align: baseline; */ background: transparent; } body { line-height: 1; } ol, ul { list-style: none; } blockquote, q { quotes: none; } blockquote:before, blockquote:after, q:before, q:after { content: ''; content: none; } /* remember to define focus styles! */ /* :focus { outline: 0; } */ /* remember to highlight inserts somehow! */ ins { text-decoration: none; } del { text-decoration: line-through; } /* tables still need 'cellspacing="0"' in the markup */ /* table { border-collapse: collapse; border-spacing: 0; } */ /* end reset css */ /* 2 column liquid layout */ #wpwrap { height: auto; min-height: 100%; width: 100%; } #wpcontent { height: 100%; padding-bottom: 50px; } #wpbody { clear: both; margin-left: 175px; } .folded #wpbody { margin-left: 60px; } #wpbody-content { float: left; width: 100%; } #adminmenu { float: left; clear: left; width: 145px; margin-top: 15px; margin-right: 5px; margin-bottom: 15px; margin-left: -160px; position: relative; padding: 0; list-style: none; } .folded #adminmenu { margin-left: -45px; } .folded #adminmenu, .folded #adminmenu li.menu-top { width: 28px; } #footer { clear: both; position: relative; width: 100%; } /* inner 2 column liquid layout */ .inner-sidebar { float: right; clear: right; display: none; width: 281px; position: relative; } .inner-sidebar #side-sortables { width: 280px; min-height: 300px; } .has-right-sidebar .inner-sidebar { display: block; } .has-right-sidebar #post-body { float: left; clear: left; width: 100%; margin-right: -340px; } .has-right-sidebar #post-body-content { margin-right: 300px; } /* 2 columns main area */ #col-container { overflow: hidden; padding: 0; margin: 0; } #col-left { padding: 0; margin: 0; overflow: hidden; width: 39%; } #col-right { float: right; clear: right; overflow: hidden; padding: 0; margin: 0; width: 59%; } /* utility classes */ .alignleft { float: left; } .alignright { float: right; } .textleft { text-align: left; } .textright { text-align: right; } .clear { clear: both; } /* Hide visually but not from screen readers */ .screen-reader-text, .screen-reader-text span { position: absolute; left: -1000em; height: 1px; width: 1px; overflow: hidden; } .hidden, .js .closed .inside, .js .hide-if-js, .no-js .hide-if-no-js { display: none; } /* include margin and padding in the width calculation of input and textarea */ input[type="text"], input[type="password"], textarea { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -ms-box-sizing: border-box; /* ie8 only */ box-sizing: border-box; } input[type="checkbox"], input[type="radio"] { vertical-align: middle; } /* styles for use by people extending the WordPress interface */ html, body { height: 100%; } body, td, textarea, input, select { font-family: "Lucida Grande", Verdana, Arial, "Bitstream Vera Sans", sans-serif; font-size: 13px; } body, textarea { line-height: 1.4em; } input, select { line-height: 15px; } p { margin: 1em 0; } blockquote { margin: 1em; } label { cursor: pointer; } li, dd { margin-bottom: 6px; } p, li, dl, dd, dt { line-height: 140%; } textarea, input, select { margin: 1px; padding: 3px; } h1 { display: block; font-size: 2em; font-weight: bold; margin: .67em 0; } h2 { display: block; font-size: 1.5em; font-weight: bold; margin: .83em 0; } h3 { display: block; font-size: 1.17em; font-weight: bold; margin: 1em 0; } h4 { display: block; font-size: 1em; font-weight: bold; margin: 1.33em 0; } h5 { display: block; font-size: 0.83em; font-weight: bold; margin: 1.67em 0; } h6 { display: block; font-size: 0.67em; font-weight: bold; margin: 2.33em 0; } ul.ul-disc { list-style: disc outside; } ul.ul-square { list-style: square outside; } ol.ol-decimal { list-style: decimal outside; } ul.ul-disc, ul.ul-square, ol.ol-decimal { margin-left: 1.8em; } ul.ul-disc > li, ul.ul-square > li, ol.ol-decimal > li { margin: 0 0 0.5em; } .subsubsub { list-style: none; margin: 8px 0 5px; padding: 0; white-space: nowrap; font-size: 11px; float: left; } .subsubsub a { line-height: 2; padding: .2em; text-decoration: none; } .subsubsub a .count, .subsubsub a.current .count { color: #999; font-weight: normal; } .subsubsub a.current { font-weight: bold; background: none; border: none; } .subsubsub li { display: inline; margin: 0; padding: 0; } .widefat { border-width: 1px; border-style: solid; border-spacing: 0; width: 100%; clear: both; margin: 0; -moz-border-radius: 4px; -khtml-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; } .widefat * { word-wrap: break-word; } .widefat a { text-decoration: none; } .widefat thead th:first-of-type { -moz-border-radius-topleft: 3px; -khtml-border-top-left-radius: 3px; -webkit-border-top-left-radius: 3px; border-top-left-radius: 3px; } .widefat thead th:last-of-type { -moz-border-radius-topright: 3px; -khtml-border-top-right-radius: 3px; -webkit-border-top-right-radius: 3px; border-top-right-radius: 3px; } .widefat tfoot th:first-of-type { -moz-border-radius-bottomleft: 3px; -khtml-border-bottom-left-radius: 3px; -webkit-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; } .widefat tfoot th:last-of-type { -moz-border-radius-bottomright: 3px; -khtml-border-bottom-right-radius: 3px; -webkit-border-bottom-right-radius: 3px; border-bottom-right-radius: 3px; } .widefat td, .widefat th { border-bottom-width: 1px; border-bottom-style: solid; font-size: 11px; } .widefat .no-items td { border-bottom-width: 0; } .widefat td { padding: 3px 7px; vertical-align: top; } .widefat td p, .widefat td ol, .widefat td ul { font-size: 11px; } .widefat th { padding: 7px 7px 8px; text-align: left; line-height: 1.3em; } .widefat th input { margin: 0 0 0 8px; padding: 0; vertical-align: text-top; } .widefat .check-column { width: 2.2em; padding: 0; } .widefat tbody th.check-column { padding: 7px 0 22px; vertical-align: top; } .widefat .num, .column-comments, .column-links, .column-posts { text-align: center; } .widefat th#comments { vertical-align: middle; } .wrap { margin: 0 15px 0 5px; } div.updated, div.error { border-width: 1px; border-style: solid; padding: 0 0.6em; margin: 5px 15px 2px; -moz-border-radius: 3px; -khtml-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; } div.updated p, div.error p { margin: 0.5em 0; padding: 2px; } .wrap div.updated, .wrap div.error { margin: 5px 0 15px; } .wrap h2 { font: italic normal normal 24px/29px Georgia, "Times New Roman", "Bitstream Charter", Times, serif; margin: 0; padding: 14px 15px 3px 0; line-height: 35px; text-shadow: rgba(255,255,255,1) 0 1px 0; } .wrap h2.long-header { padding-right: 0; } wp-admin/css/ie-rtl.css0000644002347300047320000000602111656660276014634 0ustar vonfabpsaclnhtml{direction:ltr;}body{direction:rtl;}* html #wpcontent #adminmenu .wp-has-submenu .wp-menu-toggle{background:url(../images/menu-bits-rtl.gif?ver=20100531) no-repeat scroll right -109px;}* html #wpcontent #adminmenu li.wp-has-current-submenu .wp-menu-toggle{background:url(../images/menu-bits-rtl.gif?ver=20100531) no-repeat scroll right -206px;}* html #adminmenu{margin-left:0;margin-right:-80px;}* html div.folded #adminmenu{margin-left:0;margin-right:-22px;}#wpcontent #adminmenu .wp-submenu li.wp-submenu-head{padding:3px 10px 4px 4px;}.inline-edit-row fieldset label span.title{float:right;}.inline-edit-row fieldset label span.input-text-wrap{margin-right:0;}p.search-box{float:left;}* html #poststuff h2{margin-right:0;}#bh{margin:7px 10px 0 0;float:left;}#user_info+div#favorite-actions{right:auto;left:15px;}#wphead-info{float:left;}div#dashboard-widgets{padding-right:0;padding-left:1px;}.tagchecklist span a{margin:4px -9px 0 0;}.widefat th input{margin:0 5px 0 0;}#TB_window{width:670px;position:absolute;top:50%;left:50%;margin-right:335px!important;}#dashboard_plugins{direction:ltr;}#dashboard_plugins h3.hndle{direction:rtl;}#dashboard_incoming_links ul li,#dashboard_secondary ul li,#dashboard_primary ul li,p.row-actions{width:100%;}#favorite-inside{position:absolute;right:0;}#post-status-info{height:25px;}#screen-meta{position:static;}p.submit{height:22px;}.inner-sidebar{position:static;}form#widgets-filter{position:static;}* html .meta-box-sortables .postbox .handlediv{background:transparent url(../images/menu-bits-rtl-vs.gif) no-repeat scroll right -111px;}.menu-max-depth-0 #menu-management{width:460px;}.menu-max-depth-1 #menu-management{width:490px;}.menu-max-depth-2 #menu-management{width:520px;}.menu-max-depth-3 #menu-management{width:550px;}.menu-max-depth-4 #menu-management{width:580px;}.menu-max-depth-5 #menu-management{width:610px;}.menu-max-depth-6 #menu-management{width:640px;}.menu-max-depth-7 #menu-management{width:670px;}.menu-max-depth-8 #menu-management{width:700px;}.menu-max-depth-9 #menu-management{width:730px;}.menu-max-depth-10 #menu-management{width:760px;}.menu-max-depth-11 #menu-management{width:790px;}.menu-item-depth-0{margin-left:0;}.menu-item-depth-1{margin-left:-30px;}.menu-item-depth-2{margin-left:-60px;}.menu-item-depth-3{margin-left:-90px;}.menu-item-depth-4{margin-left:-120px;}.menu-item-depth-5{margin-left:-150px;}.menu-item-depth-6{margin-left:-180px;}.menu-item-depth-7{margin-left:-210px;}.menu-item-depth-8{margin-left:-240px;}.menu-item-depth-9{margin-left:-270px;}.menu-item-depth-10{margin-left:-300px;}.menu-item-depth-11{margin-left:-330px;}#menu-to-edit li dl{padding:0!important;margin:0!important;}.ui-sortable-helper .menu-item-transport{margin-top:13px;}.ui-sortable-helper .menu-item-transport .menu-item-transport{margin-top:0;}.sortable-placeholder{margin-top:0!important;margin-left:0!important;margin-bottom:13px!important;padding:0!important;}.auto-add-pages{clear:both;float:none;}#nav-menus-frame .open-label span{float:none;display:inline-block;}#nav-menus-frame .delete-action{float:none;}wp-admin/css/ie-rtl.dev.css0000644002347300047320000000720111656660277015413 0ustar vonfabpsaclnhtml { direction: ltr; } body { direction: rtl; } * html #wpcontent #adminmenu .wp-has-submenu .wp-menu-toggle { background: url(../images/menu-bits-rtl.gif?ver=20100531) no-repeat scroll right -109px; } * html #wpcontent #adminmenu li.wp-has-current-submenu .wp-menu-toggle { background: url(../images/menu-bits-rtl.gif?ver=20100531) no-repeat scroll right -206px; } * html #adminmenu { margin-left:0; margin-right: -80px; } * html div.folded #adminmenu { margin-left: 0; margin-right: -22px; } #wpcontent #adminmenu .wp-submenu li.wp-submenu-head { padding: 3px 10px 4px 4px; } .inline-edit-row fieldset label span.title { float: right; } .inline-edit-row fieldset label span.input-text-wrap { margin-right: 0; } p.search-box { float: left; } * html #poststuff h2 { margin-right: 0; } #bh { margin: 7px 10px 0 0; float: left; } #user_info + div#favorite-actions { right: auto; left: 15px; } #wphead-info { float: left; } /* without this dashboard widgets appear in one column for some screen widths */ div#dashboard-widgets { padding-right: 0; padding-left: 1px; } .tagchecklist span a { margin: 4px -9px 0 0; } .widefat th input { margin: 0 5px 0 0; } /* ---------- add by navid */ #TB_window { width: 670px; position: absolute; top: 50%; left: 50%; margin-right: 335px !important; } #dashboard_plugins { direction: ltr; } #dashboard_plugins h3.hndle { direction: rtl; } #dashboard_incoming_links ul li, #dashboard_secondary ul li, #dashboard_primary ul li, p.row-actions { width: 100%; } #favorite-inside { position: absolute; right:0; } #post-status-info { height: 25px; } #screen-meta { position: static; } p.submit { /* quick edit and reply in edit-comments.php */ height:22px; } .inner-sidebar { /* fix edit single comment */ position: static; } form#widgets-filter { /* fix widget page */ position: static; } * html .meta-box-sortables .postbox .handlediv { background: transparent url(../images/menu-bits-rtl-vs.gif) no-repeat scroll right -111px; } /* nav menus */ .menu-max-depth-0 #menu-management { width: 460px; } .menu-max-depth-1 #menu-management { width: 490px; } .menu-max-depth-2 #menu-management { width: 520px; } .menu-max-depth-3 #menu-management { width: 550px; } .menu-max-depth-4 #menu-management { width: 580px; } .menu-max-depth-5 #menu-management { width: 610px; } .menu-max-depth-6 #menu-management { width: 640px; } .menu-max-depth-7 #menu-management { width: 670px; } .menu-max-depth-8 #menu-management { width: 700px; } .menu-max-depth-9 #menu-management { width: 730px; } .menu-max-depth-10 #menu-management { width: 760px; } .menu-max-depth-11 #menu-management { width: 790px; } .menu-item-depth-0 { margin-left: 0px; } .menu-item-depth-1 { margin-left: -30px; } .menu-item-depth-2 { margin-left: -60px; } .menu-item-depth-3 { margin-left: -90px; } .menu-item-depth-4 { margin-left: -120px; } .menu-item-depth-5 { margin-left: -150px; } .menu-item-depth-6 { margin-left: -180px; } .menu-item-depth-7 { margin-left: -210px; } .menu-item-depth-8 { margin-left: -240px; } .menu-item-depth-9 { margin-left: -270px; } .menu-item-depth-10 { margin-left: -300px; } .menu-item-depth-11 { margin-left: -330px; } #menu-to-edit li dl { padding: 0 !important; margin: 0 !important; } .ui-sortable-helper .menu-item-transport { margin-top: 13px; } .ui-sortable-helper .menu-item-transport .menu-item-transport { margin-top: 0; } .sortable-placeholder { margin-top: 0 !important; margin-left: 0 !important; margin-bottom: 13px !important; padding: 0 !important; } .auto-add-pages { clear: both; float: none; } #nav-menus-frame .open-label span { float: none; display: inline-block; } #nav-menus-frame .delete-action { float: none; } wp-admin/css/ie.dev.css0000644002347300047320000001557511656660277014631 0ustar vonfabpsacln/* Fixes for IE bugs */ #wpbody-content input.button, #wpbody-content input.button-secondary, #wpbody-content input.button-highlighted { padding: 2px 3px; } #minor-publishing-actions input, #major-publishing-actions input { min-width: auto; padding-left: 0; padding-right: 0; } #wpbody-content .postbox { border: 1px solid #dfdfdf; } #wpbody-content .postbox h3 { margin-bottom: -1px; } * html .meta-box-sortables .postbox .handlediv { background: transparent url(../images/menu-bits-vs.gif) no-repeat scroll left -111px; } * html .edit-box { display: inline; } * html .inner-sidebar #side-sortables, * html .postbox-container .meta-box-sortables { height: 300px; } * html #wpbody-content #screen-options-link-wrap { display: inline-block; width: 150px; text-align: center; } * html #wpbody-content #contextual-help-link-wrap { display: inline-block; width: 100px; text-align: center; } * html #adminmenu { margin-left: -80px; } * html .folded #adminmenu { margin-left: -22px; } * html #wpcontent #adminmenu li.menu-top { display: inline; padding: 0; margin: 0; } * html #footer { margin: 0; } .folded #adminmenu li.menu-top { display: block; zoom: 100%; } ul#adminmenu { z-index: 99; } #adminmenu li.menu-top a.menu-top { min-width: auto; width: auto; } #wpcontent #adminmenu li.wp-has-current-submenu a.wp-has-submenu { font-style: normal; } * html #wpcontent #adminmenu .wp-menu-open .wp-menu-toggle { background: none; } * html #wpcontent #adminmenu .wp-has-submenu .wp-menu-toggle { background: url(../images/menu-bits.gif?ver=20100610) no-repeat scroll left -109px; } * html #wpcontent #adminmenu li.wp-has-current-submenu .wp-menu-toggle { background: url(../images/menu-bits.gif?ver=20100610) no-repeat scroll left -206px; } * html #adminmenu div.wp-menu-image { height: 29px; } #wpcontent #adminmenu .wp-submenu li { padding: 0; } #adminmenu, .major-publishing-actions, .wp-submenu, .wp-submenu li, .wp-menu-toggle { zoom: 100%; } .folded #adminmenu li.wp-menu-separator { width: 28px; } #wpcontent #adminmenu .wp-submenu li.wp-submenu-head { padding: 3px 4px 4px 10px; zoom: 100%; } .folded #adminmenu .menu-top { height: 30px; } .folded #adminmenu .wp-submenu { margin: -1px 0 0 0; } #template, #template div, #editcat, #addcat, * html .stuffbox h3 { zoom: 100%; } .submitbox { margin-top: 10px; } /* Inline Editor */ #wpbody-content .quick-edit-row-post .inline-edit-col-left { width: 39%; } #wpbody-content .inline-edit-row-post .inline-edit-col-center { width: 19%; } #wpbody-content .quick-edit-row-page .inline-edit-col-left { width: 49%; } #wpbody-content .bulk-edit-row .inline-edit-col-left { width: 29%; } .inline-edit-row p.submit { zoom: 100%; } .inline-edit-row fieldset label span.title { display: block; float: left; width: 5em; } .inline-edit-row fieldset label span.input-text-wrap { margin-left: 0; zoom: 100%; } #wpbody-content .inline-edit-row fieldset label span.input-text-wrap input { line-height: 130%; } #wpbody-content .inline-edit-row .input-text-wrap input { width: 95%; } #wpbody-content .inline-edit-row .input-text-wrap input.inline-edit-password-input { width: 8em; } /* end Inline Editor */ input { line-height: 1; } * html .row-actions { visibility: visible; } #dashboard-widgets h3 a { height: 20px; line-height: 20px; } #wphead-info { float: right; } #titlediv #title { width: 98%; } a.button { line-height: 1.4em; margin: 1px; padding: 2px 6px; } * html div.widget-liquid-left, * html div.widget-liquid-right { display: block; position: relative; } #screen-options-wrap { overflow: hidden; } #favorite-actions { z-index: 12; } #favorite-inside, #favorite-inside a, .favorite-action { zoom: 100%; } #the-comment-list .comment-item, #post-status-info, #wpwrap, #wpcontent, #wrap, #postdivrich, #postdiv, #poststuff, .metabox-holder, #titlediv, #post-body, #editorcontainer, .tablenav, .widget-liquid-left, .widget-liquid-right, #widgets-left, .widgets-sortables, #dragHelper, .widget .widget-top, .widget, .widget-control-actions, .tagchecklist, #col-container, #col-left, #col-right, .fileedit-sub { display: block; zoom: 100%; } p.search-box { position: static; float: right; margin: -3px 0 4px; } * html #editorcontainer { padding: 0; } #editorcontainer #content { overflow: auto; margin: auto; width: 98%; } form#template div { width: 100%; } #ed_toolbar input, #ed_reply_toolbar input { overflow: visible; padding: 0 4px; } #poststuff h2 { font-size: 1.6em; } * html #poststuff h2 { margin-left: 0; } #bh { margin: 7px 10px 0 0; float: right; } /* without this dashboard widgets appear in one column for some screen widths */ div#dashboard-widgets { padding-right: 1px; } .tagchecklist span, .tagchecklist span a { display: inline-block; display: block; } .tagchecklist span a { margin: 4px 0 0 -9px; } .tablenav .button-secondary, .nav .button-secondary { padding: 0 1px; vertical-align: middle; } .tablenav select { font-size: 13px; display: inline-block; vertical-align: top; margin-top: 2px; } .tablenav .actions select { width: 155px; } table.ie-fixed { table-layout: fixed; } .widefat tr, .widefat th { margin-bottom: 0; border-spacing: 0; } .widefat th input { margin: 0 0 0 5px; } .widefat .check-column { padding: 6px 0 2px; } .widefat tbody th.check-column { padding: 4px 0 22px; } .widefat { empty-cells: show; border-collapse: collapse; } .tablenav a.button-secondary { display: inline-block; padding: 2px 5px; } * html .stuffbox, * html .stuffbox input, * html .stuffbox textarea { border: 1px solid #DFDFDF; } * html .feature-filter .feature-group li { width: 145px; } * html .widget-top .widget-title-action a { background: url("../images/menu-bits.gif?ver=20100610") no-repeat scroll 0 -110px; } * html div.widget-liquid-left { width: 99%; } #wp_inactive_widgets { padding-bottom: 8px; } * html .widgets-sortables { height: 50px; } * html a#content_resize { right: -2px; } * html .widget-title h4 { width: 205px; } * html #removing-widget .in-widget-title { display: none; } #available-widgets .widget-holder { padding-bottom: 65px; } #widgets-left .inactive { padding-bottom: 10px; } .widget-liquid-right .widget, #wp_inactive_widgets .widget { position: relative; } * html .media-item .pinkynail { height: 32px; width: 40px; } #wpcontent .button-primary-disabled { color: #9FD0D5; background: #298CBA; } #wpcontent #ajax-loading, #wpcontent .ajax-loading { vertical-align: baseline; } * html .describe .field input.text, * html .describe .field textarea { width: 440px; } #the-comment-list .unapproved tr, #the-comment-list .unapproved td { background-color: #ffffe0; } .imgedit-submit { width: 300px; } * html input { border: 1px solid #dfdfdf; } #nav-menu-header, #nav-menus-frame, #wpbody, .menu li { zoom:100%; } #update-nav-menu #post-body { overflow:hidden; } .menu li { min-width:100%; } .menu li.sortable-placeholder { min-width:400px; } wp-admin/css/ie.css0000644002347300047320000001367411656660277014052 0ustar vonfabpsacln#wpbody-content input.button,#wpbody-content input.button-secondary,#wpbody-content input.button-highlighted{padding:2px 3px;}#minor-publishing-actions input,#major-publishing-actions input{min-width:auto;padding-left:0;padding-right:0;}#wpbody-content .postbox{border:1px solid #dfdfdf;}#wpbody-content .postbox h3{margin-bottom:-1px;}* html .meta-box-sortables .postbox .handlediv{background:transparent url(../images/menu-bits-vs.gif) no-repeat scroll left -111px;}* html .edit-box{display:inline;}* html .inner-sidebar #side-sortables,* html .postbox-container .meta-box-sortables{height:300px;}* html #wpbody-content #screen-options-link-wrap{display:inline-block;width:150px;text-align:center;}* html #wpbody-content #contextual-help-link-wrap{display:inline-block;width:100px;text-align:center;}* html #adminmenu{margin-left:-80px;}* html .folded #adminmenu{margin-left:-22px;}* html #wpcontent #adminmenu li.menu-top{display:inline;padding:0;margin:0;}* html #footer{margin:0;}.folded #adminmenu li.menu-top{display:block;zoom:100%;}ul#adminmenu{z-index:99;}#adminmenu li.menu-top a.menu-top{min-width:auto;width:auto;}#wpcontent #adminmenu li.wp-has-current-submenu a.wp-has-submenu{font-style:normal;}* html #wpcontent #adminmenu .wp-menu-open .wp-menu-toggle{background:none;}* html #wpcontent #adminmenu .wp-has-submenu .wp-menu-toggle{background:url(../images/menu-bits.gif?ver=20100610) no-repeat scroll left -109px;}* html #wpcontent #adminmenu li.wp-has-current-submenu .wp-menu-toggle{background:url(../images/menu-bits.gif?ver=20100610) no-repeat scroll left -206px;}* html #adminmenu div.wp-menu-image{height:29px;}#wpcontent #adminmenu .wp-submenu li{padding:0;}#adminmenu,.major-publishing-actions,.wp-submenu,.wp-submenu li,.wp-menu-toggle{zoom:100%;}.folded #adminmenu li.wp-menu-separator{width:28px;}#wpcontent #adminmenu .wp-submenu li.wp-submenu-head{padding:3px 4px 4px 10px;zoom:100%;}.folded #adminmenu .menu-top{height:30px;}.folded #adminmenu .wp-submenu{margin:-1px 0 0 0;}#template,#template div,#editcat,#addcat,* html .stuffbox h3{zoom:100%;}.submitbox{margin-top:10px;}#wpbody-content .quick-edit-row-post .inline-edit-col-left{width:39%;}#wpbody-content .inline-edit-row-post .inline-edit-col-center{width:19%;}#wpbody-content .quick-edit-row-page .inline-edit-col-left{width:49%;}#wpbody-content .bulk-edit-row .inline-edit-col-left{width:29%;}.inline-edit-row p.submit{zoom:100%;}.inline-edit-row fieldset label span.title{display:block;float:left;width:5em;}.inline-edit-row fieldset label span.input-text-wrap{margin-left:0;zoom:100%;}#wpbody-content .inline-edit-row fieldset label span.input-text-wrap input{line-height:130%;}#wpbody-content .inline-edit-row .input-text-wrap input{width:95%;}#wpbody-content .inline-edit-row .input-text-wrap input.inline-edit-password-input{width:8em;}input{line-height:1;}* html .row-actions{visibility:visible;}#dashboard-widgets h3 a{height:20px;line-height:20px;}#wphead-info{float:right;}#titlediv #title{width:98%;}a.button{line-height:1.4em;margin:1px;padding:2px 6px;}* html div.widget-liquid-left,* html div.widget-liquid-right{display:block;position:relative;}#screen-options-wrap{overflow:hidden;}#favorite-actions{z-index:12;}#favorite-inside,#favorite-inside a,.favorite-action{zoom:100%;}#the-comment-list .comment-item,#post-status-info,#wpwrap,#wpcontent,#wrap,#postdivrich,#postdiv,#poststuff,.metabox-holder,#titlediv,#post-body,#editorcontainer,.tablenav,.widget-liquid-left,.widget-liquid-right,#widgets-left,.widgets-sortables,#dragHelper,.widget .widget-top,.widget,.widget-control-actions,.tagchecklist,#col-container,#col-left,#col-right,.fileedit-sub{display:block;zoom:100%;}p.search-box{position:static;float:right;margin:-3px 0 4px;}* html #editorcontainer{padding:0;}#editorcontainer #content{overflow:auto;margin:auto;width:98%;}form#template div{width:100%;}#ed_toolbar input,#ed_reply_toolbar input{overflow:visible;padding:0 4px;}#poststuff h2{font-size:1.6em;}* html #poststuff h2{margin-left:0;}#bh{margin:7px 10px 0 0;float:right;}div#dashboard-widgets{padding-right:1px;}.tagchecklist span,.tagchecklist span a{display:inline-block;display:block;}.tagchecklist span a{margin:4px 0 0 -9px;}.tablenav .button-secondary,.nav .button-secondary{padding:0 1px;vertical-align:middle;}.tablenav select{font-size:13px;display:inline-block;vertical-align:top;margin-top:2px;}.tablenav .actions select{width:155px;}table.ie-fixed{table-layout:fixed;}.widefat tr,.widefat th{margin-bottom:0;border-spacing:0;}.widefat th input{margin:0 0 0 5px;}.widefat .check-column{padding:6px 0 2px;}.widefat tbody th.check-column{padding:4px 0 22px;}.widefat{empty-cells:show;border-collapse:collapse;}.tablenav a.button-secondary{display:inline-block;padding:2px 5px;}* html .stuffbox,* html .stuffbox input,* html .stuffbox textarea{border:1px solid #DFDFDF;}* html .feature-filter .feature-group li{width:145px;}* html .widget-top .widget-title-action a{background:url("../images/menu-bits.gif?ver=20100610") no-repeat scroll 0 -110px;}* html div.widget-liquid-left{width:99%;}#wp_inactive_widgets{padding-bottom:8px;}* html .widgets-sortables{height:50px;}* html a#content_resize{right:-2px;}* html .widget-title h4{width:205px;}* html #removing-widget .in-widget-title{display:none;}#available-widgets .widget-holder{padding-bottom:65px;}#widgets-left .inactive{padding-bottom:10px;}.widget-liquid-right .widget,#wp_inactive_widgets .widget{position:relative;}* html .media-item .pinkynail{height:32px;width:40px;}#wpcontent .button-primary-disabled{color:#9FD0D5;background:#298CBA;}#wpcontent #ajax-loading,#wpcontent .ajax-loading{vertical-align:baseline;}* html .describe .field input.text,* html .describe .field textarea{width:440px;}#the-comment-list .unapproved tr,#the-comment-list .unapproved td{background-color:#ffffe0;}.imgedit-submit{width:300px;}* html input{border:1px solid #dfdfdf;}#nav-menu-header,#nav-menus-frame,#wpbody,.menu li{zoom:100%;}#update-nav-menu #post-body{overflow:hidden;}.menu li{min-width:100%;}.menu li.sortable-placeholder{min-width:400px;}wp-admin/css/install-rtl.css0000644002347300047320000000045411656660277015712 0ustar vonfabpsaclnbody{font-family:Tahoma,arial;}h1{font-family:arial;margin:5px -4px 0 0;}ul,ol{padding:5px 22px 5px 5px;}.step,th{text-align:right;}.submit input,.button,.button-secondary{font-family:Tahoma,arial;margin-right:0;}.form-table th{text-align:right;}#user_login,#admin_email,#pass1,#pass2{direction:ltr;}wp-admin/css/install-rtl.dev.css0000644002347300047320000000054411656660277016467 0ustar vonfabpsaclnbody { font-family: Tahoma, arial; } h1 { font-family: arial; margin: 5px -4px 0 0; } ul, ol { padding: 5px 22px 5px 5px; } .step, th { text-align: right; } .submit input, .button, .button-secondary { font-family: Tahoma, arial; margin-right: 0; } .form-table th { text-align: right; } #user_login, #admin_email, #pass1, #pass2 { direction: ltr; }wp-admin/css/install.css0000644002347300047320000000576611656660300015111 0ustar vonfabpsaclnhtml{background:#f9f9f9;}body{background:#fff;color:#333;font-family:"Lucida Grande",Verdana,Arial,"Bitstream Vera Sans",sans-serif;margin:2em auto;width:700px;padding:1em 2em;-moz-border-radius:11px;-khtml-border-radius:11px;-webkit-border-radius:11px;border-radius:11px;border:1px solid #dfdfdf;}a{color:#2583ad;text-decoration:none;}a:hover{color:#d54e21;}h1{border-bottom:1px solid #dadada;clear:both;color:#666;font:24px Georgia,"Times New Roman",Times,serif;margin:5px 0 0 -4px;padding:0;padding-bottom:7px;}h2{font-size:16px;}p,li,dd,dt{padding-bottom:2px;font-size:12px;line-height:18px;}code,.code{font-size:13px;}ul,ol,dl{padding:5px 5px 5px 22px;}a img{border:0;}abbr{border:0;font-variant:normal;}#logo{margin:6px 0 14px 0;border-bottom:none;text-align:center;}.step{margin:20px 0 15px;}.step,th{text-align:left;padding:0;}.submit input,.button,.button-secondary{font-family:"Lucida Grande",Verdana,Arial,"Bitstream Vera Sans",sans-serif;text-decoration:none;font-size:14px!important;line-height:16px;padding:6px 12px;cursor:pointer;border:1px solid #bbb;color:#464646;-moz-border-radius:15px;-khtml-border-radius:15px;-webkit-border-radius:15px;border-radius:15px;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;-khtml-box-sizing:content-box;box-sizing:content-box;}.button:hover,.button-secondary:hover,.submit input:hover{color:#000;border-color:#666;}.button,.submit input,.button-secondary{background:#f2f2f2 url(../images/white-grad.png) repeat-x scroll left top;}.button:active,.submit input:active,.button-secondary:active{background:#eee url(../images/white-grad-active.png) repeat-x scroll left top;}textarea{border:1px solid #bbb;-moz-border-radius:4px;-khtml-border-radius:4px;-webkit-border-radius:4px;border-radius:4px;}.form-table{border-collapse:collapse;margin-top:1em;width:100%;}.form-table td{margin-bottom:9px;padding:10px;border-bottom:8px solid #fff;font-size:12px;}.form-table th{font-size:13px;text-align:left;padding:16px 10px 10px 10px;border-bottom:8px solid #fff;width:130px;vertical-align:top;}.form-table tr{background:#f3f3f3;}.form-table code{line-height:18px;font-size:18px;}.form-table p{margin:4px 0 0 0;font-size:11px;}.form-table input{line-height:20px;font-size:15px;padding:2px;}.form-table th p{font-weight:normal;}#error-page{margin-top:50px;}#error-page p{font-size:12px;line-height:18px;margin:25px 0 20px;}#error-page code,.code{font-family:Consolas,Monaco,Courier,monospace;}#pass-strength-result{background-color:#eee;border-color:#ddd!important;border-style:solid;border-width:1px;margin:5px 5px 5px 1px;padding:5px;text-align:center;width:200px;display:none;}#pass-strength-result.bad{background-color:#ffb78c;border-color:#ff853c!important;}#pass-strength-result.good{background-color:#ffec8b;border-color:#fc0!important;}#pass-strength-result.short{background-color:#ffa0a0;border-color:#f04040!important;}#pass-strength-result.strong{background-color:#c3ff88;border-color:#8dff1c!important;}.message{border:1px solid #e6db55;padding:.3em .6em;margin:5px 0 15px;background-color:#ffffe0;}wp-admin/css/install.dev.css0000644002347300047320000000676011656660300015661 0ustar vonfabpsaclnhtml { background: #f9f9f9; } body { background: #fff; color: #333; font-family: "Lucida Grande", Verdana, Arial, "Bitstream Vera Sans", sans-serif; margin: 2em auto; width: 700px; padding: 1em 2em; -moz-border-radius: 11px; -khtml-border-radius: 11px; -webkit-border-radius: 11px; border-radius: 11px; border: 1px solid #dfdfdf; } a { color: #2583ad; text-decoration: none; } a:hover { color: #d54e21; } h1 { border-bottom: 1px solid #dadada; clear: both; color: #666; font: 24px Georgia, "Times New Roman", Times, serif; margin: 5px 0 0 -4px; padding: 0; padding-bottom: 7px; } h2 { font-size: 16px; } p, li, dd, dt { padding-bottom: 2px; font-size: 12px; line-height: 18px; } code, .code { font-size: 13px; } ul, ol, dl { padding: 5px 5px 5px 22px; } a img { border:0 } abbr { border: 0; font-variant: normal; } #logo { margin: 6px 0 14px 0; border-bottom: none; text-align:center } .step { margin: 20px 0 15px; } .step, th { text-align: left; padding: 0; } .submit input, .button, .button-secondary { font-family: "Lucida Grande", Verdana, Arial, "Bitstream Vera Sans", sans-serif; text-decoration: none; font-size: 14px !important; line-height: 16px; padding: 6px 12px; cursor: pointer; border: 1px solid #bbb; color: #464646; -moz-border-radius: 15px; -khtml-border-radius: 15px; -webkit-border-radius: 15px; border-radius: 15px; -moz-box-sizing: content-box; -webkit-box-sizing: content-box; -khtml-box-sizing: content-box; box-sizing: content-box; } .button:hover, .button-secondary:hover, .submit input:hover { color: #000; border-color: #666; } .button, .submit input, .button-secondary { background: #f2f2f2 url(../images/white-grad.png) repeat-x scroll left top; } .button:active, .submit input:active, .button-secondary:active { background: #eee url(../images/white-grad-active.png) repeat-x scroll left top; } textarea { border: 1px solid #bbb; -moz-border-radius: 4px; -khtml-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; } .form-table { border-collapse: collapse; margin-top: 1em; width: 100%; } .form-table td { margin-bottom: 9px; padding: 10px; border-bottom: 8px solid #fff; font-size: 12px; } .form-table th { font-size: 13px; text-align: left; padding: 16px 10px 10px 10px; border-bottom: 8px solid #fff; width: 130px; vertical-align: top; } .form-table tr { background: #f3f3f3; } .form-table code { line-height: 18px; font-size: 18px; } .form-table p { margin: 4px 0 0 0; font-size: 11px; } .form-table input { line-height: 20px; font-size: 15px; padding: 2px; } .form-table th p { font-weight: normal; } #error-page { margin-top: 50px; } #error-page p { font-size: 12px; line-height: 18px; margin: 25px 0 20px; } #error-page code, .code { font-family: Consolas, Monaco, Courier, monospace; } #pass-strength-result { background-color: #eee; border-color: #ddd !important; border-style: solid; border-width: 1px; margin: 5px 5px 5px 1px; padding: 5px; text-align: center; width: 200px; display: none; } #pass-strength-result.bad { background-color: #ffb78c; border-color: #ff853c !important; } #pass-strength-result.good { background-color: #ffec8b; border-color: #ffcc00 !important; } #pass-strength-result.short { background-color: #ffa0a0; border-color: #f04040 !important; } #pass-strength-result.strong { background-color: #c3ff88; border-color: #8dff1c !important; } .message { border: 1px solid #e6db55; padding: 0.3em 0.6em; margin: 5px 0 15px; background-color: #ffffe0; } wp-admin/css/login-rtl.css0000644002347300047320000000060211656660300015332 0ustar vonfabpsaclnbody{font-family:Tahoma,arial;}form{margin-right:8px;margin-left:0;}form .forgetmenot{float:right;}#login form .submit input{font-family:Tahoma,arial;}form .submit{float:left;}#backtoblog a{padding:8px 15px 0 0;}#login_error,.message{margin:0 8px 16px 0;}#nav{margin:0 8px 0 0;}#user_pass,#user_login,#user_email{margin-left:6px;margin-right:0;direction:ltr;}h1 a{text-decoration:none;}wp-admin/css/login-rtl.dev.css0000644002347300047320000000071111656660300016110 0ustar vonfabpsaclnbody { font-family: Tahoma, arial; } form { margin-right: 8px; margin-left: 0; } form .forgetmenot { float: right; } #login form .submit input { font-family: Tahoma, arial; } form .submit { float: left; } #backtoblog a { padding: 8px 15px 0 0; } #login_error, .message { margin: 0 8px 16px 0; } #nav { margin: 0 8px 0 0; } #user_pass, #user_login, #user_email { margin-left: 6px; margin-right: 0; direction:ltr; } h1 a { text-decoration: none; } wp-admin/css/login.css0000644002347300047320000000421611656660301014541 0ustar vonfabpsacln*{margin:0;padding:0;}body{padding-top:30px;font:11px "Lucida Grande",Verdana,Arial,"Bitstream Vera Sans",sans-serif;}form{margin-left:8px;padding:16px 16px 40px 16px;font-weight:normal;-moz-border-radius:11px;-khtml-border-radius:11px;-webkit-border-radius:11px;border-radius:11px;background:#fff;border:1px solid #e5e5e5;-moz-box-shadow:rgba(200,200,200,1) 0 4px 18px;-webkit-box-shadow:rgba(200,200,200,1) 0 4px 18px;-khtml-box-shadow:rgba(200,200,200,1) 0 4px 18px;box-shadow:rgba(200,200,200,1) 0 4px 18px;}form .forgetmenot{font-weight:normal;float:left;margin-bottom:0;}.button-primary{font-family:"Lucida Grande",Verdana,Arial,"Bitstream Vera Sans",sans-serif;padding:3px 10px;border:none;font-size:12px;border-width:1px;border-style:solid;-moz-border-radius:11px;-khtml-border-radius:11px;-webkit-border-radius:11px;border-radius:11px;cursor:pointer;text-decoration:none;margin-top:-3px;}#login form p{margin-bottom:0;}label{color:#777;font-size:13px;}form .forgetmenot label{font-size:11px;line-height:19px;}form .submit,.alignright{float:right;}form p{margin-bottom:24px;}h1 a{background:url(../images/logo-login.gif) no-repeat top center;width:326px;height:67px;text-indent:-9999px;overflow:hidden;padding-bottom:15px;display:block;}#nav{text-shadow:rgba(255,255,255,1) 0 1px 0;}#backtoblog{position:absolute;top:0;left:0;border-bottom:#c6c6c6 1px solid;background:#d9d9d9;background:-moz-linear-gradient(bottom,#d7d7d7,#e4e4e4);background:-webkit-gradient(linear,left bottom,left top,from(#d7d7d7),to(#e4e4e4));height:30px;width:100%;}#backtoblog a{text-decoration:none;display:block;padding:8px 0 0 15px;}#login{width:320px;margin:7em auto;}#login_error,.message{margin:0 0 16px 8px;border-width:1px;border-style:solid;padding:12px;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;}#nav{margin:0 0 0 8px;padding:16px;}body form .input{font-size:24px;width:97%;padding:3px;margin-top:2px;margin-right:6px;margin-bottom:16px;border:1px solid #e5e5e5;background:#fbfbfb;}input{color:#555;}.clear{clear:both;}#pass-strength-result{font-weight:bold;border-style:solid;border-width:1px;margin:12px 0 6px;padding:6px 5px;text-align:center;}wp-admin/css/login.dev.css0000644002347300047320000000501511656660301015314 0ustar vonfabpsacln* { margin: 0; padding: 0; } body { padding-top: 30px; font: 11px "Lucida Grande", Verdana, Arial, "Bitstream Vera Sans", sans-serif; } form { margin-left: 8px; padding: 16px 16px 40px 16px; font-weight: normal; -moz-border-radius: 11px; -khtml-border-radius: 11px; -webkit-border-radius: 11px; border-radius: 11px; background: #fff; border: 1px solid #e5e5e5; -moz-box-shadow: rgba(200,200,200,1) 0 4px 18px; -webkit-box-shadow: rgba(200,200,200,1) 0 4px 18px; -khtml-box-shadow: rgba(200,200,200,1) 0 4px 18px; box-shadow: rgba(200,200,200,1) 0 4px 18px; } form .forgetmenot { font-weight: normal; float: left; margin-bottom: 0; } .button-primary { font-family: "Lucida Grande", Verdana, Arial, "Bitstream Vera Sans", sans-serif; padding: 3px 10px; border: none; font-size: 12px; border-width: 1px; border-style: solid; -moz-border-radius: 11px; -khtml-border-radius: 11px; -webkit-border-radius: 11px; border-radius: 11px; cursor: pointer; text-decoration: none; margin-top: -3px; } #login form p { margin-bottom: 0; } label { color: #777; font-size: 13px; } form .forgetmenot label { font-size: 11px; line-height: 19px; } form .submit, .alignright { float: right; } form p { margin-bottom: 24px; } h1 a { background: url(../images/logo-login.gif) no-repeat top center; width: 326px; height: 67px; text-indent: -9999px; overflow: hidden; padding-bottom: 15px; display: block; } #nav { text-shadow: rgba(255,255,255,1) 0 1px 0; } #backtoblog { position: absolute; top: 0; left: 0; border-bottom: #c6c6c6 1px solid; background: #d9d9d9; /* fallback color */ background: -moz-linear-gradient(bottom, #d7d7d7, #e4e4e4); background: -webkit-gradient(linear, left bottom, left top, from(#d7d7d7), to(#e4e4e4)); height: 30px; width: 100%; } #backtoblog a { text-decoration: none; display: block; padding: 8px 0 0 15px; } #login { width: 320px; margin: 7em auto; } #login_error, .message { margin: 0 0 16px 8px; border-width: 1px; border-style: solid; padding: 12px; -moz-border-radius: 3px; -khtml-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; } #nav { margin: 0 0 0 8px; padding: 16px; } body form .input { font-size: 24px; width: 97%; padding: 3px; margin-top: 2px; margin-right: 6px; margin-bottom: 16px; border: 1px solid #e5e5e5; background: #fbfbfb; } input { color: #555; } .clear { clear: both; } #pass-strength-result { font-weight: bold; border-style: solid; border-width: 1px; margin: 12px 0 6px; padding: 6px 5px; text-align: center; } wp-admin/css/media-rtl.css0000644002347300047320000000241411656660301015305 0ustar vonfabpsaclnbody#media-upload ul#sidemenu{left:auto;right:0;}#search-filter{text-align:left;}.align .field label{padding:0 28px 0 0;margin:0 0 0 1em;}.image-align-none-label,.image-align-left-label,.image-align-center-label,.image-align-right-label{background-position:center right;}tr.image-size div.image-size-item{float:right;}tr.image-size label{margin:0 1em 0 0;}.filename.original{float:right;}.crunching{text-align:left;margin-right:0;margin-left:5px;}button.dismiss{right:auto;left:5px;}.file-error{margin:0 50px 5px 0;}.progress{left:auto;right:0;}.describe td{padding:0 0 0 5px;}.bar{border-right-width:0;border-left-width:3px;border-right-style:none;border-left-style:solid;}#media-upload .media-upload-form p{margin:0 0 1em 1em;}.filename{float:right;margin-left:0;margin-right:10px;}#media-upload .describe th.label{text-align:right;}.menu_order{float:left;}.media-upload-form label.form-help,td.help,#media-upload p.help,#media-upload label.help{font-family:Tahoma,Arial;}#gallery-settings #basic th.label{padding:5px 0 5px 5px;}#gallery-settings .title,h3.media-title{font-family:Tahoma,Arial;}#gallery-settings .describe th.label{text-align:right;}#gallery-settings label,#gallery-settings legend{margin-right:0;margin-left:15px;}#gallery-settings .align .field label{margin:0 0 0 1.5em;}wp-admin/css/media-rtl.dev.css0000644002347300047320000000301011656660301016053 0ustar vonfabpsaclnbody#media-upload ul#sidemenu { left: auto; right: 0; } #search-filter { text-align: left; } /* specific to the image upload form */ .align .field label { padding: 0 28px 0 0; margin: 0 0 0 1em; } .image-align-none-label, .image-align-left-label, .image-align-center-label, .image-align-right-label { background-position: center right; } tr.image-size div.image-size-item { float: right; } tr.image-size label { margin: 0 1em 0 0; } .filename.original { float: right; } .crunching { text-align: left; margin-right: 0; margin-left: 5px; } button.dismiss { right: auto; left: 5px; } .file-error { margin: 0 50px 5px 0; } .progress { left: auto; right: 0; } .describe td { padding: 0 0 0 5px; } .bar { border-right-width: 0; border-left-width: 3px; border-right-style: none; border-left-style: solid; } /* Specific to Uploader */ #media-upload .media-upload-form p { margin: 0 0 1em 1em; } .filename { float: right; margin-left: 0; margin-right: 10px; } #media-upload .describe th.label { text-align: right; } .menu_order { float: left; } .media-upload-form label.form-help, td.help, #media-upload p.help, #media-upload label.help { font-family: Tahoma, Arial; } #gallery-settings #basic th.label { padding: 5px 0 5px 5px; } #gallery-settings .title, h3.media-title { font-family: Tahoma, Arial; } #gallery-settings .describe th.label { text-align: right; } #gallery-settings label, #gallery-settings legend { margin-right: 0; margin-left: 15px; } #gallery-settings .align .field label { margin: 0 0 0 1.5em; } wp-admin/css/media.css0000644002347300047320000001136211656660302014511 0ustar vonfabpsaclndiv#media-upload-header{margin:0;padding:0 5px;font-weight:bold;position:relative;border-bottom-width:1px;border-bottom-style:solid;}body#media-upload ul#sidemenu{font-weight:normal;margin:0 5px;left:0;bottom:-1px;float:none;overflow:hidden;}div#media-upload-error{margin:1em;font-weight:bold;}form{margin:1em;}#search-filter{text-align:right;}th{position:relative;}.media-upload-form label.form-help,td.help{font-family:"Lucida Grande",Verdana,Arial,"Bitstream Vera Sans",sans-serif;font-style:italic;font-weight:normal;}.media-upload-form p.help{margin:0;padding:0;}.media-upload-form fieldset{width:100%;border:none;text-align:justify;margin:0 0 1em 0;padding:0;}.image-align-none-label{background:url(../images/align-none.png) no-repeat center left;}.image-align-left-label{background:url(../images/align-left.png) no-repeat center left;}.image-align-center-label{background:url(../images/align-center.png) no-repeat center left;}.image-align-right-label{background:url(../images/align-right.png) no-repeat center left;}tr.image-size td{width:460px;}tr.image-size div.image-size-item{float:left;width:25%;margin:0;}#library-form .progress,#gallery-form .progress,#flash-upload-ui,.insert-gallery,.describe.startopen,.describe.startclosed{display:none;}.media-item .thumbnail{max-width:128px;max-height:128px;}thead.media-item-info tr{background-color:transparent;}thead.media-item-info th,thead.media-item-info td{border:none;margin:0;}.form-table thead.media-item-info{border:8px solid #fff;}abbr.required{text-decoration:none;border:none;}.describe label{display:inline;}.describe td{vertical-align:middle;padding:0 5px 8px 0;}.describe td.error{padding:2px 8px;}.describe td.A1{width:132px;}.describe input[type="text"],.describe textarea{width:460px;border-width:1px;border-style:solid;}.hidden{height:0;width:0;overflow:hidden;border:none;}#media-upload p.ml-submit{padding:1em 0;}#media-upload p.help,#media-upload label.help{font-family:"Lucida Grande",Verdana,Arial,"Bitstream Vera Sans",sans-serif;font-style:italic;font-weight:normal;}#media-upload tr.image-size td.field{text-align:center;}#media-upload #media-items{border-width:1px;border-style:solid;border-bottom:none;width:623px;}#media-upload .media-item{border-bottom-width:1px;border-bottom-style:solid;min-height:36px;width:100%;}#media-upload .ui-sortable .media-item{cursor:move;}.filename{line-height:36px;padding:0 10px;overflow:hidden;}#media-upload .describe{width:100%;clear:both;cursor:default;}#media-upload .slidetoggle{border-top-width:1px;border-top-style:solid;}#media-upload .describe th.label{padding-top:.2em;text-align:left;min-width:120px;}#media-upload tr.align td.field{text-align:center;}#media-upload tr.image-size{margin-bottom:1em;height:3em;}#media-upload #filter{width:623px;}#media-upload #filter .subsubsub{margin:8px 0;}#filter .tablenav select{border-style:solid;border-width:1px;padding:2px;vertical-align:top;width:auto;}#media-upload .del-attachment{display:none;margin:5px 0;}.menu_order{float:right;font-size:11px;margin:10px 10px 0;}.menu_order_input{border:1px solid #ddd;font-size:10px;padding:1px;width:23px;}.ui-sortable-helper{background-color:#fff;border:1px solid #aaa;opacity:.6;filter:alpha(opacity=60);}#media-upload th.order-head{width:20%;text-align:center;}#media-upload th.actions-head{width:25%;text-align:center;}#media-upload a.wp-post-thumbnail{margin:0 20px;}#media-items a.delete{display:block;float:right;}#media-upload .widefat{width:626px;border-style:solid solid none;}.sorthelper{height:37px;width:623px;display:block;}#gallery-settings th.label{width:160px;}#gallery-settings #basic th.label{padding:5px 5px 5px 0;}#gallery-settings .title{clear:both;padding:0 0 3px;font-size:1.6em;border-bottom:1px solid #DADADA;}h3.media-title{font-size:1.6em;}h4.media-sub-title{border-bottom:1px solid #DADADA;font-size:1.3em;margin:12px;padding:0 0 3px;}#gallery-settings .title,h3.media-title,h4.media-sub-title{font-family:Georgia,"Times New Roman",Times,serif;font-weight:normal;color:#5A5A5A;}#gallery-settings .describe td{vertical-align:middle;height:3em;}#gallery-settings .describe th.label{padding-top:.5em;text-align:left;}#gallery-settings .describe{padding:5px;width:615px;clear:both;cursor:default;}#gallery-settings .describe select{width:15em;}#gallery-settings .describe select option,#gallery-settings .describe td{padding:0;}#gallery-settings label,#gallery-settings legend{font-size:13px;color:#464646;margin-right:15px;}#gallery-settings .align .field label{margin:0 1.5em 0 0;}#gallery-settings p.ml-submit{border-top:1px solid #dfdfdf;}#gallery-settings select#columns{width:6em;}#sort-buttons{font-size:.8em;margin:3px 25px -8px 0;text-align:right;max-width:625px;}#sort-buttons a{text-decoration:none;}#sort-buttons #asc,#sort-buttons #showall{padding-left:5px;}#sort-buttons span{margin-right:25px;}wp-admin/css/media.dev.css0000644002347300047320000001307011656660302015264 0ustar vonfabpsaclndiv#media-upload-header { margin: 0; padding: 0 5px; font-weight: bold; position: relative; border-bottom-width: 1px; border-bottom-style: solid; } body#media-upload ul#sidemenu { font-weight: normal; margin: 0 5px; left: 0; bottom: -1px; float: none; overflow: hidden; } div#media-upload-error { margin: 1em; font-weight: bold; } form { margin: 1em; } #search-filter { text-align: right; } th { position: relative; } .media-upload-form label.form-help, td.help { font-family: "Lucida Grande", Verdana, Arial, "Bitstream Vera Sans", sans-serif; font-style: italic; font-weight: normal; } .media-upload-form p.help { margin: 0; padding: 0; } .media-upload-form fieldset { width: 100%; border: none; text-align: justify; margin: 0 0 1em 0; padding: 0; } /* specific to the image upload form */ .image-align-none-label { background: url(../images/align-none.png) no-repeat center left; } .image-align-left-label { background: url(../images/align-left.png) no-repeat center left; } .image-align-center-label { background: url(../images/align-center.png) no-repeat center left; } .image-align-right-label { background: url(../images/align-right.png) no-repeat center left; } tr.image-size td { width: 460px; } tr.image-size div.image-size-item { float: left; width: 25%; margin: 0; } #library-form .progress, #gallery-form .progress, #flash-upload-ui, .insert-gallery, .describe.startopen, .describe.startclosed { display: none; } .media-item .thumbnail { max-width: 128px; max-height: 128px; } thead.media-item-info tr { background-color: transparent; } thead.media-item-info th, thead.media-item-info td { border: none; margin: 0; } .form-table thead.media-item-info { border: 8px solid #fff; } abbr.required { text-decoration: none; border: none; } .describe label { display: inline; } .describe td { vertical-align: middle; padding: 0 5px 8px 0; } .describe td.error { padding: 2px 8px; } .describe td.A1 { width: 132px; } .describe input[type="text"], .describe textarea { width: 460px; border-width: 1px; border-style: solid; } .hidden { height: 0; width: 0; overflow: hidden; border: none; } /* Specific to Uploader */ #media-upload p.ml-submit { padding: 1em 0; } #media-upload p.help, #media-upload label.help { font-family: "Lucida Grande", Verdana, Arial, "Bitstream Vera Sans", sans-serif; font-style: italic; font-weight: normal; } #media-upload tr.image-size td.field { text-align: center; } #media-upload #media-items { border-width: 1px; border-style: solid; border-bottom: none; width: 623px; } #media-upload .media-item { border-bottom-width: 1px; border-bottom-style: solid; min-height: 36px; width: 100%; } #media-upload .ui-sortable .media-item { cursor: move; } .filename { line-height: 36px; padding: 0 10px; overflow: hidden; } #media-upload .describe { width: 100%; clear: both; cursor: default; } #media-upload .slidetoggle { border-top-width: 1px; border-top-style: solid; } #media-upload .describe th.label { padding-top: .2em; text-align: left; min-width: 120px; } #media-upload tr.align td.field { text-align: center; } #media-upload tr.image-size { margin-bottom: 1em; height: 3em; } #media-upload #filter { width: 623px; } #media-upload #filter .subsubsub { margin: 8px 0; } #filter .tablenav select { border-style: solid; border-width: 1px; padding: 2px; vertical-align: top; width: auto; } #media-upload .del-attachment { display: none; margin: 5px 0; } .menu_order { float: right; font-size: 11px; margin: 10px 10px 0; } .menu_order_input { border: 1px solid #ddd; font-size: 10px; padding: 1px; width: 23px; } .ui-sortable-helper { background-color: #fff; border: 1px solid #aaa; opacity: 0.6; filter: alpha(opacity=60); } #media-upload th.order-head { width: 20%; text-align: center; } #media-upload th.actions-head { width: 25%; text-align: center; } #media-upload a.wp-post-thumbnail { margin: 0 20px; } #media-items a.delete { display: block; float: right; } #media-upload .widefat { width: 626px; border-style: solid solid none; } .sorthelper { height: 37px; width: 623px; display: block; } #gallery-settings th.label { width: 160px; } #gallery-settings #basic th.label { padding: 5px 5px 5px 0; } #gallery-settings .title { clear: both; padding: 0 0 3px; font-size: 1.6em; border-bottom: 1px solid #DADADA; } h3.media-title { font-size: 1.6em; } h4.media-sub-title { border-bottom: 1px solid #DADADA; font-size: 1.3em; margin: 12px; padding: 0 0 3px; } #gallery-settings .title, h3.media-title, h4.media-sub-title { font-family: Georgia,"Times New Roman",Times,serif; font-weight: normal; color: #5A5A5A; } #gallery-settings .describe td { vertical-align: middle; height: 3em; } #gallery-settings .describe th.label { padding-top: .5em; text-align: left; } #gallery-settings .describe { padding: 5px; width: 615px; clear: both; cursor: default; } #gallery-settings .describe select { width: 15em; } #gallery-settings .describe select option, #gallery-settings .describe td { padding: 0; } #gallery-settings label, #gallery-settings legend { font-size: 13px; color: #464646; margin-right: 15px; } #gallery-settings .align .field label { margin: 0 1.5em 0 0; } #gallery-settings p.ml-submit { border-top: 1px solid #dfdfdf; } #gallery-settings select#columns { width: 6em; } #sort-buttons { font-size: 0.8em; margin: 3px 25px -8px 0; text-align: right; max-width: 625px; } #sort-buttons a { text-decoration: none; } #sort-buttons #asc, #sort-buttons #showall { padding-left: 5px; } #sort-buttons span { margin-right: 25px; } wp-admin/css/ms.css0000644002347300047320000000063311656660302014050 0ustar vonfabpsacln#dashboard_right_now p.musub{margin-top:12px;border-top:1px solid #ececec;padding-left:16px;position:static;}#dashboard_right_now td.b a.musublink{font-size:16px;}#dashboard_right_now div.musubtable{border-top:none;}#dashboard_right_now div.musubtable .t{white-space:normal;}.site-deleted{background:#ff8573;}.site-spammed{background:#faafaa;}.site-archived{background:#ffebe8;}.site-mature{background:#fecac2;}wp-admin/css/ms.dev.css0000644002347300047320000000104111656660302014617 0ustar vonfabpsacln/* Dashboard: MS Specific Data */ #dashboard_right_now p.musub { margin-top: 12px; border-top: 1px solid #ececec; padding-left: 16px; position: static; } #dashboard_right_now td.b a.musublink { font-size: 16px; } #dashboard_right_now div.musubtable { border-top: none; } #dashboard_right_now div.musubtable .t { white-space: normal; } /* Background Color for Site Status */ .site-deleted { background: #ff8573; } .site-spammed { background: #faafaa; } .site-archived { background: #ffebe8; } .site-mature { background: #fecac2; } wp-admin/css/nav-menu-rtl.css0000644002347300047320000001015511656660303015757 0ustar vonfabpsacln#nav-menus-frame{margin-right:300px;margin-left:0;}#wpbody-content #menu-settings-column{margin-right:-300px;margin-left:0;float:right;}#menu-management-liquid{float:right;}#menu-management{margin-left:20px;margin-right:0;}#post-body{padding:0 10px 10px 0;}.post-body-plain{padding:10px 0 0 10px;}#menu-management .nav-tabs-arrow-left{right:0;left:auto;}#menu-management .nav-tabs-arrow-right{left:0;right:auto;text-align:left;}#menu-management .nav-tabs{padding-right:20px;padding-left:10px;}.js #menu-management .nav-tabs{float:right;margin-right:0;margin-left:-400px;}#select-nav-menu-container{text-align:left;}#wpbody .open-label{float:right;}#wpbody .open-label span{padding-left:10px;padding-right:0;}.js .input-with-default-title{font-style:normal;font-weight:bold;}.postbox .howto input{float:left;}#nav-menu-theme-locations .button-controls{text-align:left;}.meta-sep,.submitdelete,.submitcancel{float:right;}#cancel-save{margin-right:20px;margin-left:0;}.list-controls{float:right;}.add-to-menu{float:left;}#add-custom-link label span{float:right;padding-left:5px;padding-right:0;}.howto span{float:right;}.list li .menu-item-title input{margin-left:3px;margin-right:0;}.menu-item-handle{padding-right:10px;padding-left:0;}.menu-item-edit-active .menu-item-handle{-moz-border-radius:6px 6px 0 0;-webkit-border-bottom-left-radius:0;-webkit-border-bottom-right-radius:0;-khtml-border-bottom-left-radius:0;-khtml-border-bottom-right-radius:0;border-bottom-left-radius:0;border-bottom-right-radius:0;}.menu-item-handle .item-title{margin-left:13em;margin-right:0;}.menu-item-depth-0{margin-right:0;margin-left:0;}.menu-item-depth-1{margin-right:30px;margin-left:0;}.menu-item-depth-2{margin-right:60px;margin-left:0;}.menu-item-depth-3{margin-right:90px;margin-left:0;}.menu-item-depth-4{margin-right:120px;margin-left:0;}.menu-item-depth-5{margin-right:150px;margin-left:0;}.menu-item-depth-6{margin-right:180px;margin-left:0;}.menu-item-depth-7{margin-right:210px;margin-left:0;}.menu-item-depth-8{margin-right:240px;margin-left:0;}.menu-item-depth-9{margin-right:270px;margin-left:0;}.menu-item-depth-10{margin-right:300px;margin-left:0;}.menu-item-depth-11{margin-right:330px;margin-left:0;}.menu-item-depth-0 .menu-item-transport{margin-right:0;margin-left:0;}.menu-item-depth-1 .menu-item-transport{margin-right:-30px;margin-left:0;}.menu-item-depth-2 .menu-item-transport{margin-right:-60px;margin-left:0;}.menu-item-depth-3 .menu-item-transport{margin-right:-90px;margin-left:0;}.menu-item-depth-4 .menu-item-transport{margin-right:-120px;margin-left:0;}.menu-item-depth-5 .menu-item-transport{margin-right:-150px;margin-left:0;}.menu-item-depth-6 .menu-item-transport{margin-right:-180px;margin-left:0;}.menu-item-depth-7 .menu-item-transport{margin-right:-210px;margin-left:0;}.menu-item-depth-8 .menu-item-transport{margin-right:-240px;margin-left:0;}.menu-item-depth-9 .menu-item-transport{margin-right:-270px;margin-left:0;}.menu-item-depth-10 .menu-item-transport{margin-right:-300px;margin-left:0;}.menu-item-depth-11 .menu-item-transport{margin-right:-330px;margin-left:0;}.item-type{padding-left:10px;padding-right:0;}.item-controls{left:20px;right:auto;}.item-controls .item-order{padding-left:10px;padding-right:0;}.item-edit{background-image:url("../images/menu-bits-rtl.gif?ver=20100531");background-position:100% -105px;left:-20px;right:auto;-moz-border-radius-bottomright:3px;-moz-border-radius-bottomleft:0;-webkit-border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:0;-khtml-border-bottom-right-radius:3px;-khtml-border-bottom-left-radius:0;border-bottom-right-radius:3px;border-bottom-left-radius:0;}.menu-item-settings{padding:10px 10px 10px 0;border-width:0 1px 1px 1px;}.link-to-original{font-style:normal;font-weight:bold;}.link-to-original a{padding-right:4px;padding-left:0;}.menu-item-settings .description-thin,.menu-item-settings .description-wide{margin-left:10px;margin-right:0;float:right;}.major-publishing-actions .publishing-action{text-align:left;float:left;}.major-publishing-actions .delete-action{text-align:right;float:right;padding-left:15px;padding-right:0;}.menu-name-label{margin-left:15px;margin-right:0;}.auto-add-pages{float:right;}wp-admin/css/nav-menu-rtl.dev.css0000644002347300047320000001167111656660303016540 0ustar vonfabpsacln#nav-menus-frame { margin-right: 300px; margin-left: 0; } #wpbody-content #menu-settings-column { margin-right: -300px; margin-left: 0; float: right; } /* Menu Container */ #menu-management-liquid { float: right; } #menu-management { margin-left: 20px; margin-right: 0; } #post-body { padding:0 10px 10px 0; } .post-body-plain { padding: 10px 0 0 10px; } /* Menu Tabs */ #menu-management .nav-tabs-arrow-left { right: 0; left:auto; } #menu-management .nav-tabs-arrow-right { left: 0; right:auto; text-align: left; } #menu-management .nav-tabs { padding-right: 20px; padding-left: 10px; } .js #menu-management .nav-tabs { float: right; margin-right: 0px; margin-left: -400px; } #select-nav-menu-container { text-align: left; } #wpbody .open-label { float:right; } #wpbody .open-label span { padding-left: 10px; padding-right:0; } .js .input-with-default-title { font-style: normal; font-weight:bold; } /* Add Menu Item Boxes */ .postbox .howto input { float: left; } #nav-menu-theme-locations .button-controls { text-align: left; } /* Button Primary Actions */ .meta-sep, .submitdelete, .submitcancel { float:right; } #cancel-save { margin-right: 20px; margin-left: 0; } /* Button Secondary Actions */ .list-controls { float: right; } .add-to-menu { float: left; } /* Custom Links */ #add-custom-link label span { float: right; padding-left: 5px; padding-right:0;} .howto span { float: right; } .list li .menu-item-title input { margin-left: 3px; margin-right: 0 } /* Nav Menu */ .menu-item-handle { padding-right: 10px; padding-left: 0; } .menu-item-edit-active .menu-item-handle { -moz-border-radius: 6px 6px 0 0; -webkit-border-bottom-left-radius: 0; -webkit-border-bottom-right-radius: 0; -khtml-border-bottom-left-radius: 0; -khtml-border-bottom-right-radius: 0; border-bottom-left-radius: 0; border-bottom-right-radius: 0; } .menu-item-handle .item-title { margin-left:13em; margin-right:0; } /* WARNING: The factor of 30px is hardcoded into the nav-menus javascript. */ .menu-item-depth-0 { margin-right: 0px; margin-left:0;} .menu-item-depth-1 { margin-right: 30px; margin-left:0;} .menu-item-depth-2 { margin-right: 60px; margin-left:0;} .menu-item-depth-3 { margin-right: 90px; margin-left:0;} .menu-item-depth-4 { margin-right: 120px; margin-left:0;} .menu-item-depth-5 { margin-right: 150px; margin-left:0;} .menu-item-depth-6 { margin-right: 180px; margin-left:0;} .menu-item-depth-7 { margin-right: 210px; margin-left:0;} .menu-item-depth-8 { margin-right: 240px; margin-left:0;} .menu-item-depth-9 { margin-right: 270px; margin-left:0;} .menu-item-depth-10 { margin-right: 300px; margin-left:0;} .menu-item-depth-11 { margin-right: 330px; margin-left:0;} .menu-item-depth-0 .menu-item-transport { margin-right: 0px; margin-left:0;} .menu-item-depth-1 .menu-item-transport { margin-right: -30px; margin-left:0;} .menu-item-depth-2 .menu-item-transport { margin-right: -60px; margin-left:0;} .menu-item-depth-3 .menu-item-transport { margin-right: -90px; margin-left:0;} .menu-item-depth-4 .menu-item-transport { margin-right: -120px; margin-left:0;} .menu-item-depth-5 .menu-item-transport { margin-right: -150px; margin-left:0;} .menu-item-depth-6 .menu-item-transport { margin-right: -180px; margin-left:0;} .menu-item-depth-7 .menu-item-transport { margin-right: -210px; margin-left:0;} .menu-item-depth-8 .menu-item-transport { margin-right: -240px; margin-left:0;} .menu-item-depth-9 .menu-item-transport { margin-right: -270px; margin-left:0;} .menu-item-depth-10 .menu-item-transport { margin-right: -300px; margin-left:0;} .menu-item-depth-11 .menu-item-transport { margin-right: -330px; margin-left:0;} /* Menu item controls */ .item-type { padding-left: 10px; padding-right:0;} .item-controls { left: 20px; right: auto;} .item-controls .item-order { padding-left: 10px; padding-right: 0;} .item-edit { background-image: url("../images/menu-bits-rtl.gif?ver=20100531"); background-position: 100% -105px; left: -20px; right:auto; -moz-border-radius-bottomright: 3px; -moz-border-radius-bottomleft: 0; -webkit-border-bottom-right-radius: 3px; -webkit-border-bottom-left-radius: 0; -khtml-border-bottom-right-radius: 3px; -khtml-border-bottom-left-radius: 0; border-bottom-right-radius: 3px; border-bottom-left-radius: 0; } /* Menu editing */ .menu-item-settings { padding: 10px 10px 10px 0; border-width: 0 1px 1px 1px; } .link-to-original { font-style: normal; font-weight: bold; } .link-to-original a { padding-right: 4px; padding-left:0; } .menu-item-settings .description-thin, .menu-item-settings .description-wide { margin-left: 10px; margin-right:0; float: right; } /* Major/minor publishing actions (classes) */ .major-publishing-actions .publishing-action { text-align: left; float: left; } .major-publishing-actions .delete-action { text-align: right; float: right; padding-left: 15px; padding-right:0; } .menu-name-label { margin-left: 15px; margin-right:0; } .auto-add-pages { float: right; }wp-admin/css/nav-menu.css0000644002347300047320000002462711656660303015171 0ustar vonfabpsaclnhtml,body{min-width:950px;}#nav-menus-frame{margin-left:300px;}#wpbody-content #menu-settings-column{display:inline;width:281px;margin-left:-300px;clear:both;float:left;padding-top:24px;}.no-js #wpbody-content #menu-settings-column{padding-top:31px;}#menu-settings-column .inside{clear:both;padding:0 10px;}.metabox-holder-disabled .postbox{opacity:.5;filter:alpha(opacity=50);}.metabox-holder-disabled .button-controls .select-all{display:none;}#wpbody{position:relative;}#menu-management-liquid{float:left;min-width:100%;}#menu-management{position:relative;margin-right:20px;margin-top:-3px;width:100%;}#menu-management .menu-edit{margin-bottom:20px;}#nav-menu-header,#post-body,#nav-menu-footer{border-color:#ccc;border-style:solid;}#nav-menu-header{border-width:1px 1px 0 1px;-moz-border-radius-topleft:6px;-webkit-border-top-left-radius:6px;-khtml-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-topright:6px;-webkit-border-top-right-radius:6px;-khtml-border-top-right-radius:6px;border-top-right-radius:6px;}#post-body{background:#fff;padding:10px;border-width:0 1px;}#post-body div.updated{margin:0;}#post-body-content{position:relative;}#menu-management .menu-add-new abbr{font-weight:bold;}#nav-menu-footer{border-width:0 1px 1px 1px;-moz-border-radius-bottomleft:6px;-webkit-border-bottom-left-radius:6px;-khtml-border-bottom-left-radius:6px;border-bottom-left-radius:6px;-moz-border-radius-bottomright:6px;-webkit-border-bottom-right-radius:6px;-khtml-border-bottom-right-radius:6px;border-bottom-right-radius:6px;}#menu-management .nav-tabs-nav{margin:0 20px;}#menu-management .nav-tabs-arrow{width:10px;padding:0 5px 4px;cursor:pointer;position:absolute;top:0;line-height:22px;font-size:18px;text-shadow:0 1px 0 #fff;}#menu-management .nav-tabs-arrow a{color:#C1C1C1;}#menu-management .nav-tabs-arrow a:hover{color:#D54E21;}#menu-management .nav-tabs-arrow a:active{color:#464646;}#menu-management .nav-tabs-arrow-left{left:0;}#menu-management .nav-tabs-arrow-right{right:0;text-align:right;}#menu-management .nav-tabs-wrapper{width:100%;height:28px;margin-bottom:-1px;overflow:hidden;}#menu-management .nav-tabs{padding-left:20px;padding-right:10px;}.js #menu-management .nav-tabs{float:left;margin-left:0;margin-right:-400px;}#menu-management .nav-tab{margin-bottom:0;background:#f4f4f4;font-weight:bold;border-color:#dfdfdf;}#menu-management .nav-tab-active{border-color:#ccc;}#select-nav-menu-container{text-align:right;padding:0 10px 3px 10px;margin-bottom:5px;}#select-nav-menu{width:100px;display:inline;}#menu-name-label{margin-top:-2px;}#wpbody .open-label{display:block;float:left;}#wpbody .open-label span{padding-right:10px;}.js .input-with-default-title{color:#aaa;font-style:italic;}#menu-management .inside{padding:0 10px;}.postbox .howto input{width:180px;float:right;}.customlinkdiv .howto input{width:210px;}#nav-menu-theme-locations .howto select{width:100%;}#nav-menu-theme-locations .button-controls{text-align:right;}.add-menu-item-view-all{height:400px;}#menu-container .submit{margin:0 0 10px;padding:0;}.meta-sep,.submitdelete,.submitcancel{display:block;float:left;font-size:11px;margin:4px 0;line-height:15px;}.meta-sep{padding:0 2px;}#cancel-save{color:#f00;text-decoration:underline;font-size:11px;margin-left:20px;margin-top:5px;}#cancel-save:hover{background-color:#F00;color:#fff;}.list-controls{float:left;margin-top:5px;}.add-to-menu{float:right;}.postbox img.waiting{display:none;vertical-align:middle;}.button-controls{clear:both;margin:10px 0;}.show-all,.hide-all{cursor:pointer;}.hide-all{display:none;}#menu-name{width:270px;}#manage-menu .inside{padding:0;}#available-links dt{display:block;}#add-custom-link .howto{font-size:11px;}#add-custom-link label span{display:block;float:left;margin-top:5px;padding-right:5px;}.menu-item-textbox{width:180px;}.howto span{margin-top:4px;display:block;float:left;}.quick-search{width:190px;}.list-wrap{display:none;clear:both;margin-bottom:10px;}.list-container{max-height:200px;overflow-y:auto;padding:10px 10px 5px;border:1px solid #DFDFDF;-moz-border-radius:4px;}.postbox p.submit{margin-bottom:0;}.list li{display:none;margin:0;margin-bottom:5px;}.list li .menu-item-title{cursor:pointer;display:block;}.list li .menu-item-title input{margin-right:3px;margin-top:-3px;}#menu-container .inside{padding-bottom:10px;}.menu{padding-top:1em;}#menu-to-edit{padding:1em 0;}.menu ul{width:100%;}.menu li{margin-bottom:0;position:relative;}.menu-item-bar{clear:both;line-height:1.5em;position:relative;margin-top:13px;}.menu-item-handle{border:1px solid #E6E6E6;position:relative;padding-left:10px;height:auto;width:400px;line-height:35px;text-shadow:0 1px 0 #FFF;font-weight:bold;overflow:hidden;border-radius:6px;-webkit-border-radius:6px;-moz-border-radius:6px;-khtml-border-radius:6px;word-wrap:break-word;}.menu-item-edit-active .menu-item-handle{-moz-border-radius:6px 6px 0 0;-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:0;-khtml-border-bottom-right-radius:0;-khtml-border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0;}.no-js .menu-item-edit-active .item-edit{display:none;}.js .menu-item-handle{cursor:move;}.menu li.deleting .menu-item-handle{background-color:#f66;background-image:none;text-shadow:0 0 0 #ccc;}.menu-item-handle .item-title{padding:7px 0;line-height:20px;display:block;margin-right:13em;}li.menu-item.ui-sortable-helper dl{margin-top:0;}li.menu-item.ui-sortable-helper .menu-item-transport dl{margin-top:13px;}.menu .sortable-placeholder{height:35px;width:410px;margin-top:13px;}.menu-item-depth-0{margin-left:0;}.menu-item-depth-1{margin-left:30px;}.menu-item-depth-2{margin-left:60px;}.menu-item-depth-3{margin-left:90px;}.menu-item-depth-4{margin-left:120px;}.menu-item-depth-5{margin-left:150px;}.menu-item-depth-6{margin-left:180px;}.menu-item-depth-7{margin-left:210px;}.menu-item-depth-8{margin-left:240px;}.menu-item-depth-9{margin-left:270px;}.menu-item-depth-10{margin-left:300px;}.menu-item-depth-11{margin-left:330px;}.menu-item-depth-0 .menu-item-transport{margin-left:0;}.menu-item-depth-1 .menu-item-transport{margin-left:-30px;}.menu-item-depth-2 .menu-item-transport{margin-left:-60px;}.menu-item-depth-3 .menu-item-transport{margin-left:-90px;}.menu-item-depth-4 .menu-item-transport{margin-left:-120px;}.menu-item-depth-5 .menu-item-transport{margin-left:-150px;}.menu-item-depth-6 .menu-item-transport{margin-left:-180px;}.menu-item-depth-7 .menu-item-transport{margin-left:-210px;}.menu-item-depth-8 .menu-item-transport{margin-left:-240px;}.menu-item-depth-9 .menu-item-transport{margin-left:-270px;}.menu-item-depth-10 .menu-item-transport{margin-left:-300px;}.menu-item-depth-11 .menu-item-transport{margin-left:-330px;}body.menu-max-depth-0{min-width:950px!important;}body.menu-max-depth-1{min-width:980px!important;}body.menu-max-depth-2{min-width:1010px!important;}body.menu-max-depth-3{min-width:1040px!important;}body.menu-max-depth-4{min-width:1070px!important;}body.menu-max-depth-5{min-width:1100px!important;}body.menu-max-depth-6{min-width:1130px!important;}body.menu-max-depth-7{min-width:1160px!important;}body.menu-max-depth-8{min-width:1190px!important;}body.menu-max-depth-9{min-width:1220px!important;}body.menu-max-depth-10{min-width:1250px!important;}body.menu-max-depth-11{min-width:1280px!important;}.item-type{text-transform:uppercase;font-size:11px;color:#999;padding-right:10px;}.item-controls{font-size:11px;position:absolute;right:20px;top:-1px;}.item-controls a{text-decoration:none;}.item-controls a:hover{cursor:pointer;}.item-controls .item-order{padding-right:10px;}.item-controls .item-order a{font-weight:bold;}body.js .item-order{display:none;}.item-controls .menu-item-delete:hover{color:#f00;}.item-edit{background:url("../images/menu-bits.gif?ver=20100610") no-repeat scroll 0 -105px;position:absolute;right:-20px;top:0;display:block;width:23px;height:36px;overflow:hidden;text-indent:-999em;border-bottom:1px solid #eee;-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;-khtml-border-bottom-left-radius:3px;border-bottom-left-radius:3px;}.menu-instructions-inactive{display:none;}.menu-item-settings{background:#F9F9F9;display:block;width:400px;padding:10px 0 10px 10px;border:solid #E6E6E6;border-width:0 1px 1px 1px;-moz-border-radius:0 0 6px 6px;-webkit-border-bottom-right-radius:6px;-webkit-border-bottom-left-radius:6px;-khtml-border-bottom-right-radius:6px;-khtml-border-bottom-left-radius:6px;}.menu-item-edit-active .menu-item-settings{display:block;}.menu-item-edit-inactive .menu-item-settings{display:none;}.add-menu-item-pagelinks{margin:.5em auto;text-align:center;}.link-to-original{display:block;margin:0 0 10px;padding:3px 5px 5px;font-size:11px;color:#777;font-style:italic;border:1px solid #dfdfdf;border-radius:6px;-webkit-border-radius:6px;-moz-border-radius:6px;-khtml-border-radius:6px;}.link-to-original a{padding-left:4px;font-style:normal;}.hidden-field{display:none;}.menu-item-settings .description-thin,.menu-item-settings .description-wide{margin-right:10px;float:left;}.description-thin{width:190px;height:40px;}.description-wide{width:390px;}.menu-item-actions{padding-top:15px;}#cancel-save{cursor:pointer;}#cancel-save:hover{color:#fff!important;}#update-menu-item{color:#fff!important;}#update-menu-item:hover,#update-menu-item:active,#update-menu-item:focus{color:#eaf2fa!important;border-color:#13455b!important;}.major-publishing-actions{clear:both;padding:5px 10px;}.major-publishing-actions .publishing-action{text-align:right;float:right;line-height:23px;margin:5px 0 1px;}.major-publishing-actions .delete-action{vertical-align:middle;text-align:left;float:left;padding-right:15px;margin-top:5px;}.menu-name-label span,.auto-add-pages label{font-size:11px;font-style:normal;}.menu-name-label{margin-right:15px;}.auto-add-pages input{margin-top:0;}.auto-add-pages{margin-top:4px;float:left;}.submitbox .submitcancel{color:#21759B;border-bottom:1px solid #21759B;padding:1px 2px;text-decoration:none;}.submitbox .submitcancel:hover{background:#21759B;color:#fff;}.major-publishing-actions .form-invalid{border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px;-khtml-border-radius:4px;padding-left:4px;margin-left:-4px;}#menu-item-name-wrap:after,#menu-item-url-wrap:after,#menu-name-label:after,#menu-settings-column .inside:after,#nav-menus-frame:after,#post-body-content:after,.button-controls:after,.major-publishing-actions:after,.menu-item-settings:after{clear:both;content:".";display:block;height:0;visibility:hidden;}#nav-menus-frame,.button-controls,#menu-item-url-wrap,#menu-item-name-wrap{display:block;}wp-admin/css/nav-menu.dev.css0000644002347300047320000003072611656660304015744 0ustar vonfabpsacln/** * WordPress Administration Custom Navigation * Interface CSS * * @version 2.0.0 * * @package WordPress * @subpackage Administration */ html, body { min-width: 950px; } #nav-menus-frame { margin-left: 300px; } #wpbody-content #menu-settings-column { display:inline; width:281px; margin-left: -300px; clear: both; float: left; padding-top: 24px; } .no-js #wpbody-content #menu-settings-column { padding-top: 31px; } #menu-settings-column .inside { clear: both; padding:0 10px; } .metabox-holder-disabled .postbox { opacity: 0.5; filter: alpha(opacity=50); } .metabox-holder-disabled .button-controls .select-all { display: none; } #wpbody { position: relative; } /* Menu Container */ #menu-management-liquid { float: left; min-width: 100%; } #menu-management { position: relative; margin-right: 20px; margin-top: -3px; width: 100%; } #menu-management .menu-edit { margin-bottom: 20px; } #nav-menu-header, #post-body, #nav-menu-footer { border-color: #ccc; border-style: solid; } #nav-menu-header { border-width: 1px 1px 0 1px; -moz-border-radius-topleft: 6px; -webkit-border-top-left-radius: 6px; -khtml-border-top-left-radius: 6px; border-top-left-radius: 6px; -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; -khtml-border-top-right-radius: 6px; border-top-right-radius: 6px; } #post-body { background: #fff; padding: 10px; border-width: 0 1px; } #post-body div.updated { margin: 0; } #post-body-content { position: relative; } #menu-management .menu-add-new abbr { font-weight:bold; } #nav-menu-footer { border-width: 0 1px 1px 1px; -moz-border-radius-bottomleft: 6px; -webkit-border-bottom-left-radius: 6px; -khtml-border-bottom-left-radius: 6px; border-bottom-left-radius: 6px; -moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; -khtml-border-bottom-right-radius: 6px; border-bottom-right-radius: 6px; } /* Menu Tabs */ #menu-management .nav-tabs-nav { margin: 0 20px; } #menu-management .nav-tabs-arrow { width: 10px; padding: 0 5px 4px; cursor: pointer; position: absolute; top: 0; line-height: 22px; font-size: 18px; text-shadow: 0 1px 0 #fff; } #menu-management .nav-tabs-arrow a { color: #C1C1C1; } #menu-management .nav-tabs-arrow a:hover { color: #D54E21; } #menu-management .nav-tabs-arrow a:active { color: #464646; } #menu-management .nav-tabs-arrow-left { left: 0; } #menu-management .nav-tabs-arrow-right { right: 0; text-align: right; } #menu-management .nav-tabs-wrapper { width: 100%; height: 28px; margin-bottom: -1px; overflow: hidden; } #menu-management .nav-tabs { padding-left: 20px; padding-right: 10px; } .js #menu-management .nav-tabs { float: left; margin-left: 0px; margin-right: -400px; } #menu-management .nav-tab { margin-bottom: 0; background: #f4f4f4; font-weight: bold; border-color: #dfdfdf; } #menu-management .nav-tab-active { border-color:#ccc; } #select-nav-menu-container { text-align: right; padding: 0 10px 3px 10px; margin-bottom: 5px; } #select-nav-menu { width: 100px; display: inline; } #menu-name-label { margin-top: -2px; } #wpbody .open-label { display: block; float:left; } #wpbody .open-label span { padding-right: 10px; } .js .input-with-default-title { color: #aaa; font-style: italic; } #menu-management .inside { padding: 0 10px; } /* Add Menu Item Boxes */ .postbox .howto input { width: 180px; float: right; } .customlinkdiv .howto input { width: 210px; } #nav-menu-theme-locations .howto select { width: 100%; } #nav-menu-theme-locations .button-controls { text-align: right; } .add-menu-item-view-all { height: 400px; } /* Button Primary Actions */ #menu-container .submit { margin: 0px 0px 10px; padding: 0px; } .meta-sep, .submitdelete, .submitcancel { display:block; float:left; font-size: 11px; margin: 4px 0; line-height: 15px; } .meta-sep { padding: 0 2px; } #cancel-save { color: #ff0000; text-decoration: underline; font-size: 11px; margin-left: 20px; margin-top: 5px; } #cancel-save:hover { background-color: #FF0000; color: #fff; } /* Button Secondary Actions */ .list-controls { float: left; margin-top: 5px; } .add-to-menu { float: right; } .postbox img.waiting { display: none; vertical-align: middle; } .button-controls { clear:both; margin: 10px 0; } .show-all, .hide-all { cursor: pointer; } .hide-all { display: none; } /* Create Menu */ #menu-name { width: 270px; } #manage-menu .inside { padding: 0px 0px; } /* Custom Links */ #available-links dt { display: block; } #add-custom-link .howto { font-size: 11px; } #add-custom-link label span { display: block; float: left; margin-top: 5px; padding-right: 5px; } .menu-item-textbox { width: 180px; } .howto span { margin-top: 4px; display: block; float: left; } /* Menu item types */ .quick-search { width: 190px; } .list-wrap { display: none; clear: both; margin-bottom: 10px; } .list-container { max-height: 200px; overflow-y: auto; padding: 10px 10px 5px; border: 1px solid #DFDFDF; -moz-border-radius: 4px; } .postbox p.submit { margin-bottom: 0; } /* Listings */ .list li { display: none; margin: 0; margin-bottom: 5px; } .list li .menu-item-title { cursor: pointer; display: block; } .list li .menu-item-title input { margin-right: 3px; margin-top: -3px; } /* Nav Menu */ #menu-container .inside { padding-bottom: 10px; } .menu { padding-top:1em; } #menu-to-edit { padding: 1em 0; } .menu ul { width: 100%; } .menu ul.sub-menu { } .menu li { margin-bottom: 0; position:relative; } .menu-item-bar { clear:both; line-height:1.5em; position:relative; margin-top: 13px; } .menu-item-handle { border: 1px solid #E6E6E6; position: relative; padding-left: 10px; height: auto; width: 400px; line-height: 35px; text-shadow: 0 1px 0 #FFFFFF; font-weight:bold; overflow: hidden; border-radius: 6px; -webkit-border-radius: 6px; -moz-border-radius: 6px; -khtml-border-radius: 6px; word-wrap: break-word; } .menu-item-edit-active .menu-item-handle { -moz-border-radius: 6px 6px 0 0; -webkit-border-bottom-right-radius: 0; -webkit-border-bottom-left-radius: 0; -khtml-border-bottom-right-radius: 0; -khtml-border-bottom-left-radius: 0; border-bottom-right-radius: 0; border-bottom-left-radius: 0; } .no-js .menu-item-edit-active .item-edit { display: none; } .js .menu-item-handle { cursor: move; } .menu li.deleting .menu-item-handle { background-color: #f66; background-image: none; text-shadow: 0 0 0 #ccc; } .menu-item-handle .item-title { padding: 7px 0; line-height: 20px; display:block; margin-right:13em; } /* Sortables */ li.menu-item.ui-sortable-helper dl { margin-top: 0; } li.menu-item.ui-sortable-helper .menu-item-transport dl { margin-top: 13px; } .menu .sortable-placeholder { height: 35px; width: 410px; margin-top: 13px; } /* WARNING: The factor of 30px is hardcoded into the nav-menus javascript. */ .menu-item-depth-0 { margin-left: 0px; } .menu-item-depth-1 { margin-left: 30px; } .menu-item-depth-2 { margin-left: 60px; } .menu-item-depth-3 { margin-left: 90px; } .menu-item-depth-4 { margin-left: 120px; } .menu-item-depth-5 { margin-left: 150px; } .menu-item-depth-6 { margin-left: 180px; } .menu-item-depth-7 { margin-left: 210px; } .menu-item-depth-8 { margin-left: 240px; } .menu-item-depth-9 { margin-left: 270px; } .menu-item-depth-10 { margin-left: 300px; } .menu-item-depth-11 { margin-left: 330px; } .menu-item-depth-0 .menu-item-transport { margin-left: 0px; } .menu-item-depth-1 .menu-item-transport { margin-left: -30px; } .menu-item-depth-2 .menu-item-transport { margin-left: -60px; } .menu-item-depth-3 .menu-item-transport { margin-left: -90px; } .menu-item-depth-4 .menu-item-transport { margin-left: -120px; } .menu-item-depth-5 .menu-item-transport { margin-left: -150px; } .menu-item-depth-6 .menu-item-transport { margin-left: -180px; } .menu-item-depth-7 .menu-item-transport { margin-left: -210px; } .menu-item-depth-8 .menu-item-transport { margin-left: -240px; } .menu-item-depth-9 .menu-item-transport { margin-left: -270px; } .menu-item-depth-10 .menu-item-transport { margin-left: -300px; } .menu-item-depth-11 .menu-item-transport { margin-left: -330px; } body.menu-max-depth-0 { min-width: 950px !important; } body.menu-max-depth-1 { min-width: 980px !important; } body.menu-max-depth-2 { min-width: 1010px !important; } body.menu-max-depth-3 { min-width: 1040px !important; } body.menu-max-depth-4 { min-width: 1070px !important; } body.menu-max-depth-5 { min-width: 1100px !important; } body.menu-max-depth-6 { min-width: 1130px !important; } body.menu-max-depth-7 { min-width: 1160px !important; } body.menu-max-depth-8 { min-width: 1190px !important; } body.menu-max-depth-9 { min-width: 1220px !important; } body.menu-max-depth-10 { min-width: 1250px !important; } body.menu-max-depth-11 { min-width: 1280px !important; } /* Menu item controls */ .item-type { text-transform: uppercase; font-size: 11px; color: #999999; padding-right: 10px; } .item-controls { font-size: 11px; position: absolute; right: 20px; top: -1px; } .item-controls a { text-decoration: none; } .item-controls a:hover { cursor: pointer; } .item-controls .item-order { padding-right: 10px;} .item-controls .item-order a { font-weight:bold; } body.js .item-order { display:none; } .item-controls .menu-item-delete:hover { color: #ff0000; } .item-edit { background: url("../images/menu-bits.gif?ver=20100610") no-repeat scroll 0 -105px; position: absolute; right: -20px; top: 0; display: block; width: 23px; height: 36px; overflow: hidden; text-indent:-999em; border-bottom: 1px solid #eee; -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; -khtml-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; } /* Menu editing */ .menu-instructions-inactive { display: none; } .menu-item-settings { background: #F9F9F9; display:block; width: 400px; padding: 10px 0 10px 10px; border: solid #E6E6E6; border-width: 0 1px 1px 1px; -moz-border-radius: 0 0 6px 6px; -webkit-border-bottom-right-radius: 6px; -webkit-border-bottom-left-radius: 6px; -khtml-border-bottom-right-radius: 6px; -khtml-border-bottom-left-radius: 6px; } .menu-item-edit-active .menu-item-settings { display:block; } .menu-item-edit-inactive .menu-item-settings { display:none; } .add-menu-item-pagelinks { margin:.5em auto; text-align:center; } .link-to-original { display: block; margin: 0 0 10px; padding: 3px 5px 5px; font-size: 11px; color: #777; font-style: italic; border: 1px solid #dfdfdf; border-radius: 6px; -webkit-border-radius: 6px; -moz-border-radius: 6px; -khtml-border-radius: 6px; } .link-to-original a { padding-left: 4px; font-style: normal; } .hidden-field { display: none; } .menu-item-settings .description-thin, .menu-item-settings .description-wide { margin-right: 10px; float: left; } .description-thin { width: 190px; height: 40px; } .description-wide { width: 390px; } .menu-item-actions { padding-top: 15px; } #cancel-save { cursor: pointer; } #cancel-save:hover { color: #fff !important; } #update-menu-item { color: #fff !important; } #update-menu-item:hover, #update-menu-item:active, #update-menu-item:focus { color: #eaf2fa !important; border-color: #13455b !important; } /* Major/minor publishing actions (classes) */ .major-publishing-actions { clear:both; padding: 5px 10px; } .major-publishing-actions .publishing-action { text-align: right; float: right; line-height: 23px; margin: 5px 0 1px; } .major-publishing-actions .delete-action { vertical-align: middle; text-align: left; float: left; padding-right: 15px; margin-top: 5px; } .menu-name-label span, .auto-add-pages label { font-size: 11px; font-style: normal; } .menu-name-label { margin-right: 15px; } .auto-add-pages input { margin-top: 0; } .auto-add-pages { margin-top: 4px; float: left; } .submitbox .submitcancel { color: #21759B; border-bottom: 1px solid #21759B; padding: 1px 2px; text-decoration: none; } .submitbox .submitcancel:hover { background: #21759B; color: #fff; } .major-publishing-actions .form-invalid { border-radius: 4px; -webkit-border-radius: 4px; -moz-border-radius: 4px; -khtml-border-radius: 4px; padding-left: 4px; margin-left: -4px; } /* Clearfix */ #menu-item-name-wrap:after, #menu-item-url-wrap:after, #menu-name-label:after, #menu-settings-column .inside:after, #nav-menus-frame:after, #post-body-content:after, .button-controls:after, .major-publishing-actions:after, .menu-item-settings:after { clear: both; content: "."; display: block; height: 0; visibility: hidden; } #nav-menus-frame, .button-controls, #menu-item-url-wrap, #menu-item-name-wrap { display: block; } wp-admin/css/plugin-install-rtl.css0000644002347300047320000000124111656660303017167 0ustar vonfabpsaclndiv.star{left:auto;right:0;letter-spacing:0;}.star img,div.star a,div.star a:hover,div.star a:visited{right:auto;left:0;}#plugin-information ul#sidemenu{left:auto;right:0;}#plugin-information h2{margin-right:0;margin-left:200px;}#plugin-information .fyi{margin-left:5px;margin-right:20px;}#plugin-information .fyi h2{margin-left:0;}#plugin-information .fyi ul{padding:10px 7px 10px 5px;}#plugin-information #section-screenshots li p{padding-left:0;padding-right:20px;}#plugin-information .updated,#plugin-information pre{margin-right:0;margin-left:215px;}#plugin-information .updated,#plugin-information .error{clear:none;direction:rtl;}#section-description{direction:ltr;}wp-admin/css/plugin-install-rtl.dev.css0000644002347300047320000000140311656660304017745 0ustar vonfabpsaclndiv.star { left: auto; right: 0; letter-spacing: 0; } .star img, div.star a, div.star a:hover, div.star a:visited { right: auto; left: 0; } #plugin-information ul#sidemenu { left: auto; right: 0; } #plugin-information h2 { margin-right: 0; margin-left: 200px; } #plugin-information .fyi { margin-left: 5px; margin-right: 20px; } #plugin-information .fyi h2 { margin-left: 0; } #plugin-information .fyi ul { padding: 10px 7px 10px 5px; } #plugin-information #section-screenshots li p { padding-left: 0; padding-right: 20px; } #plugin-information .updated, #plugin-information pre { margin-right: 0; margin-left: 215px; } #plugin-information .updated, #plugin-information .error { clear: none; direction: rtl; } #section-description { direction: ltr; } wp-admin/css/plugin-install.dev.css0000644002347300047320000000546411656660304017161 0ustar vonfabpsacln/* NOTE: the following CSS rules(.star*) are taken more or less straight from the bbPress rating plugin. */ div.star-holder { position: relative; height: 19px; width: 100px; font-size: 19px; } div.action-links { font-weight: normal; margin: 6px 0 0; } div.star { height: 100%; position: absolute; top: 0; left: 0; background-color: transparent; letter-spacing: 1ex; border: none; } .star1 { width: 20%; } .star2 { width: 40%; } .star3 { width: 60%; } .star4 { width: 80%; } .star5 { width: 100%; } .star img, div.star a, div.star a:hover, div.star a:visited { display: block; position: absolute; right: 0; border: none; text-decoration: none; } div.star img { width: 19px; height: 19px; border-left: 1px solid #fff; border-right: 1px solid #fff; } /* Header on thickbox */ #plugin-information-header { margin: 0; padding: 0 5px; font-weight: bold; position: relative; border-bottom-width: 1px; border-bottom-style: solid; height: 2.5em; } #plugin-information ul#sidemenu { font-weight: normal; margin: 0 5px; position: absolute; left: 0; bottom: -1px; } /* Install sidemenu */ #plugin-information p.action-button { width: 100%; padding-bottom: 0; margin-bottom: 0; margin-top: 10px; -moz-border-radius: 3px 0 0 3px; -webkit-border-top-left-radius: 3px; -khtml-border-top-left-radius: 3px; border-top-left-radius: 3px; -webkit-border-bottom-left-radius: 3px; -khtml-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; } #plugin-information .action-button a { text-align: center; font-weight: bold; text-decoration: none; display: block; line-height: 2em; } #plugin-information h2 { clear: none !important; margin-right: 200px; } #plugin-information .fyi { margin: 0 10px 50px; width: 210px; } #plugin-information .fyi h2 { font-size: 0.9em; margin-bottom: 0; margin-right: 0; } #plugin-information .fyi h2.mainheader { padding: 5px; -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; -khtml-border-top-left-radius: 3px; border-top-left-radius: 3px; } #plugin-information .fyi ul { padding: 10px 5px 10px 7px; margin: 0; list-style: none; -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; -khtml-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; } #plugin-information .fyi li { margin-right: 0; } #plugin-information #section-holder { padding: 10px; } #plugin-information .section ul, #plugin-information .section ol { margin-left: 16px; list-style-type: square; list-style-image: none; } #plugin-information #section-screenshots li img { vertical-align: text-top; } #plugin-information #section-screenshots li p { font-style: italic; padding-left: 20px; padding-bottom: 2em; } #plugin-information .updated, #plugin-information pre { margin-right: 215px; } #plugin-information pre { padding: 7px; } wp-admin/css/press-this-rtl.css0000644002347300047320000000253511656660305016337 0ustar vonfabpsaclnbody{font-family:Tahoma,Arial;}#poststuff #edButtonPreview,#poststuff #edButtonHTML{margin:0 0 0 5px;float:right;}div#poststuff{padding-left:0;padding-right:10px;}.posting{margin-right:0;margin-left:228px;left:auto;right:0;}#side-info-column{float:left;right:auto;left:0;margin-right:0;margin-left:10px;}#side-info-column .sleeve{padding-left:0;padding-right:10px;}h3.tb{margin-left:0;margin-right:5px;}#actions{float:left;}#extra_fields #actions{right:auto;left:4px;}#actions li{float:right;margin-right:0;margin-left:10px;}#extra_fields .button{margin-right:0;margin-left:5px;}#img_container a{float:right;}#category-add input,#category-add select{font-family:Tahoma,Arial;}.inline-editor ul.cat-checklist ul,.categorydiv ul.categorychecklist ul,#linkcategorydiv ul.categorychecklist ul{margin-left:0;margin-right:18px;}#tagsdiv #newtag{margin-right:0;margin-left:5px;}#tagadd{margin-left:0;margin-right:3px;}#tagchecklist span{margin-left:.5em;margin-right:10px;float:right;}#tagchecklist span a{margin:6px -9px 0 0;float:right;}#content{margin-left:0;margin-right:1%;}.submit input,.button,.button-primary,.button-secondary,.button-highlighted,#postcustomstuff .submit input{font-family:Tahoma,Arial,sans-serif;}.ac_results li{text-align:right;}#TB_ajaxContent #options{right:auto;left:25px;}#post_status{margin-left:0;margin-right:10px;}#footer{padding:10px 60px 0 0;}wp-admin/css/plugin-install.css0000644002347300047320000000446511656660305016405 0ustar vonfabpsaclndiv.star-holder{position:relative;height:19px;width:100px;font-size:19px;}div.action-links{font-weight:normal;margin:6px 0 0;}div.star{height:100%;position:absolute;top:0;left:0;background-color:transparent;letter-spacing:1ex;border:none;}.star1{width:20%;}.star2{width:40%;}.star3{width:60%;}.star4{width:80%;}.star5{width:100%;}.star img,div.star a,div.star a:hover,div.star a:visited{display:block;position:absolute;right:0;border:none;text-decoration:none;}div.star img{width:19px;height:19px;border-left:1px solid #fff;border-right:1px solid #fff;}#plugin-information-header{margin:0;padding:0 5px;font-weight:bold;position:relative;border-bottom-width:1px;border-bottom-style:solid;height:2.5em;}#plugin-information ul#sidemenu{font-weight:normal;margin:0 5px;position:absolute;left:0;bottom:-1px;}#plugin-information p.action-button{width:100%;padding-bottom:0;margin-bottom:0;margin-top:10px;-moz-border-radius:3px 0 0 3px;-webkit-border-top-left-radius:3px;-khtml-border-top-left-radius:3px;border-top-left-radius:3px;-webkit-border-bottom-left-radius:3px;-khtml-border-bottom-left-radius:3px;border-bottom-left-radius:3px;}#plugin-information .action-button a{text-align:center;font-weight:bold;text-decoration:none;display:block;line-height:2em;}#plugin-information h2{clear:none!important;margin-right:200px;}#plugin-information .fyi{margin:0 10px 50px;width:210px;}#plugin-information .fyi h2{font-size:.9em;margin-bottom:0;margin-right:0;}#plugin-information .fyi h2.mainheader{padding:5px;-moz-border-radius-topleft:3px;-webkit-border-top-left-radius:3px;-khtml-border-top-left-radius:3px;border-top-left-radius:3px;}#plugin-information .fyi ul{padding:10px 5px 10px 7px;margin:0;list-style:none;-moz-border-radius-bottomleft:3px;-webkit-border-bottom-left-radius:3px;-khtml-border-bottom-left-radius:3px;border-bottom-left-radius:3px;}#plugin-information .fyi li{margin-right:0;}#plugin-information #section-holder{padding:10px;}#plugin-information .section ul,#plugin-information .section ol{margin-left:16px;list-style-type:square;list-style-image:none;}#plugin-information #section-screenshots li img{vertical-align:text-top;}#plugin-information #section-screenshots li p{font-style:italic;padding-left:20px;padding-bottom:2em;}#plugin-information .updated,#plugin-information pre{margin-right:215px;}#plugin-information pre{padding:7px;}wp-admin/css/press-this-rtl.dev.css0000644002347300047320000000323411656660305017111 0ustar vonfabpsaclnbody { font-family: Tahoma, Arial; } #poststuff #edButtonPreview, #poststuff #edButtonHTML { margin: 0 0 0 5px; float: right; } /* Editor/Main Column */ div#poststuff { padding-left: 0; padding-right: 10px; } .posting { margin-right: 0; margin-left: 228px; left: auto; right: 0; } #side-info-column { float: left; right: auto; left: 0; margin-right: 0; margin-left: 10px; } #side-info-column .sleeve { padding-left: 0; padding-right: 10px; } h3.tb { margin-left: 0; margin-right: 5px; } #actions { float: left; } #extra_fields #actions { right: auto; left: 4px; } #actions li { float: right; margin-right: 0; margin-left: 10px; } #extra_fields .button { margin-right: 0; margin-left: 5px; } /* Photo Styles */ #img_container a { float: right; } #category-add input, #category-add select { font-family: Tahoma, Arial; } .inline-editor ul.cat-checklist ul, .categorydiv ul.categorychecklist ul, #linkcategorydiv ul.categorychecklist ul { margin-left: 0; margin-right: 18px; } /* Tags */ #tagsdiv #newtag { margin-right: 0; margin-left: 5px; } #tagadd { margin-left: 0; margin-right: 3px; } #tagchecklist span { margin-left: .5em; margin-right: 10px; float: right; } #tagchecklist span a { margin: 6px -9px 0 0; float: right; } #content { margin-left: 0; margin-right: 1%; } .submit input, .button, .button-primary, .button-secondary, .button-highlighted, #postcustomstuff .submit input { font-family: Tahoma, Arial, sans-serif; } .ac_results li { text-align: right; } #TB_ajaxContent #options { right: auto; left: 25px; } #post_status { margin-left: 0; margin-right: 10px; } /* Footer */ #footer { padding: 10px 60px 0 0; } wp-admin/css/press-this.dev.css0000644002347300047320000002200411656660306016307 0ustar vonfabpsaclnbody { font: 13px "Lucida Grande", Verdana, Arial, "Bitstream Vera Sans", sans-serif; color: #333; margin: 0; padding: 0; min-width: 675px; min-height: 400px; } img { border: none; } /* Header */ #wphead { border-top: none; padding-top: 4px; background: #444 !important; } .tagchecklist span a { background: transparent url(../images/xit.gif) no-repeat 0 0; } #poststuff #edButtonPreview, #poststuff #edButtonHTML { -moz-border-radius: 3px 3px 0 0; -webkit-border-top-right-radius: 3px; -webkit-border-top-left-radius: 3px; -khtml-border-top-right-radius: 3px; -khtml-border-top-left-radius: 3px; border-top-right-radius: 3px; border-top-left-radius: 3px; border-style: solid; border-width: 1px; cursor: pointer; display: block; height: 18px; margin: 0 5px 0 0; padding: 0 5px 0; font-size: 10px; line-height: 18px; float: left; } .howto { margin-top: 2px; margin-bottom: 3px; font-size: 11px; font-style: italic; display: block; } input.text { outline-color: -moz-use-text-color; outline-style: none; outline-width: medium; width: 100%; } #message { -moz-border-radius: 6px; -khtml-border-radius: 6px; -webkit-border-radius: 6px; border-radius: 6px; } /* Editor/Main Column */ div#poststuff { margin: 10px; } div.zerosize { border: 0 none; height: 0; margin: 0; overflow: hidden; padding: 0; width: 0; } #poststuff #edButtonPreview.active, #poststuff #edButtonHTML.active { display: none; } .posting { margin-right: 212px; position: relative; } #side-info-column { float: right; width: 200px; position: relative; right: 0; } #side-info-column .sleeve { padding-top: 5px; } #poststuff .inside { font-size: 11px; margin: 8px; } #poststuff h2,#poststuff h3 { font-size: 12px; font-weight: bold; line-height: 1; margin: 0; padding: 7px 9px; } #tagsdiv-post_tag h3, #categorydiv h3 { cursor: pointer; } h3.tb { text-shadow: 0 1px 0 #fff; font-weight: bold; font-size: 12px; margin-left: 5px; } #TB_window { border: 1px solid #333; -moz-border-radius: 6px; -khtml-border-radius: 6px; -webkit-border-radius: 6px; border-radius: 6px; } .postbox, .stuffbox { margin-bottom: 10px; border-width: 1px; border-style: solid; line-height: 1; -moz-border-radius: 6px; -khtml-border-radius: 6px; -webkit-border-radius: 6px; border-radius: 6px; } .postbox:hover .handlediv, .stuffbox:hover .handlediv { background: transparent url(../images/menu-bits.gif) no-repeat scroll left -111px; } .handlediv { float: right; height: 26px; width: 23px; } #title, .tbtitle { -moz-border-radius: 6px; -khtml-border-radius: 6px; -webkit-border-radius: 6px; border-radius: 6px; border-style: solid; border-width: 1px; font-size: 1.7em; outline: none; padding: 3px 4px; border-color: #dfdfdf; } .tbtitle { font-size: 12px; padding: 3px; } #title { width: 97%; } .editor-container { -moz-border-radius: 6px; -khtml-border-radius: 6px; -webkit-border-radius: 6px; border-radius: 6px; border: 1px solid #dfdfdf; background-color: #fff; } .postdivrich { padding-top: 25px; position: relative; } .actions { float: right; margin: -19px 0 0; } #extra-fields .actions { margin: -15px -5px 0 0; } .actions li { float: left; list-style: none; margin-right: 10px; } #extra-fields .button { margin-right: 5px; padding: 3px 6px; border-radius: 10px; -webkit-border-radius: 10px; -khtml-border-radius: 10px; -moz-border-radius: 10px; } /* Photo Styles */ .photolist { margin-top: -10px; } #photo_saving { margin: 0 8px 8px; vertical-align: middle; } #img_container { background-color: #fff; } #img_container_container { overflow: auto; } #extra-fields { margin-top: 10px; position: relative; } #waiting { margin-top: 10px; } #extra-fields .postbox { margin-bottom: 5px; } #extra-fields .titlewrap { padding: 0; overflow: auto; height: 100px; } #img_container a { display: block; float: left; overflow: hidden; vertical-align: center; } #img_container img, #img_container a { width: 68px; height: 68px; } #img_container img { border: none; background-color: #f4f4f4; cursor: pointer; } #img_container a, #img_container a:link, #img_container a:visited { border: 1px solid #ccc; display: block; position: relative; } #img_container a:hover, #img_container a:active { border-color: #000; z-index: 1000; border-width: 2px; margin: -1px; } /* Video */ #embed-code { width: 100%; height: 98px; } /* Submit Column */ #viewsite { padding: 0; margin: 0 0 20px 5px; font-size: 10px; clear: both; } .wp-hidden-children .wp-hidden-child { display: none; } /* Categories */ .category-add input { width: 94%; font-family: "Lucida Grande", Verdana, Arial, "Bitstream Vera Sans", sans-serif; font-size: 12px; margin: 1px; } .category-add select { width: 100%; -x-system-font: none; border-style: solid; border-width: 1px; font-family: "Lucida Grande", Verdana, Arial, "Bitstream Vera Sans", sans-serif; font-size: 11px; height: 2em; line-height: 20px; padding: 2px; margin: 1px; vertical-align: top; } .category-add input.category-add-sumbit { width: auto; } .categorydiv div.tabs-panel, #linkcategorydiv div.tabs-panel { height: 100px; overflow: auto; padding: 0.5em 0.9em; border-style: solid; border-width: 1px; } .category-tabs li { display: inline; padding-right: 8px; } .category-tabs a { text-decoration: none; } .categorydiv ul, #linkcategorydiv ul { list-style: none; padding: 0; margin: 0; } .inline-editor ul.cat-checklist ul, .categorydiv ul.categorychecklist ul, #linkcategorydiv ul.categorychecklist ul { margin-left: 18px; } ul.categorychecklist li { margin: 0; padding: 0; line-height: 19px; } .categorydiv .tabs-panel { border-width: 3px; border-style: solid; } ul.category-tabs { margin-top: 12px; margin-bottom: 6px; } ul.category-tabs li.tabs { border-style: solid solid none; border-width: 1px 1px 0; } ul.category-tabs li { padding: 5px 8px; -moz-border-radius: 3px 3px 0 0; -webkit-border-top-left-radius: 3px; -webkit-border-top-right-radius: 3px; -khtml-border-top-left-radius: 3px; -khtml-border-top-right-radius: 3px; border-top-left-radius: 3px; border-top-right-radius: 3px; } /* Tags */ .screen-reader-text { display: none; } .tagsdiv .newtag { margin-right: 5px; } .jaxtag { clear: both; margin: 0; } .tagadd { margin-left: 3px; } .tagchecklist { margin-top: 3px; margin-bottom: 1em; font-size: 12px; overflow: auto; } .tagchecklist strong { position: absolute; font-size: .75em; } .tagchecklist span { margin-right: .5em; margin-left: 10px; display: block; float: left; font-size: 11px; line-height: 1.8em; white-space: nowrap; cursor: default; } .tagchecklist span a { margin: 6px 0 0 -9px; cursor: pointer; width: 10px; height: 10px; display: block; float: left; text-indent: -9999px; overflow: hidden; position: absolute; } #content { margin: 5px 0; padding: 0 5px; border: 0 none; height: 365px; width: 97% !important; } * html .postdivrich { zoom: 1; } /* Submit */ #saving { display: inline; vertical-align: middle; } .submit input, .button, .button-primary, .button-secondary, .button-highlighted, #postcustomstuff .submit input { font-family: "Lucida Grande", Verdana, Arial, "Bitstream Vera Sans", sans-serif; text-decoration: none; font-size: 11px !important; line-height: 16px; padding: 2px 8px; cursor: pointer; border-width: 1px; border-style: solid; -moz-border-radius: 11px; -khtml-border-radius: 11px; -webkit-border-radius: 11px; border-radius: 11px; } .button-primary { background: #21759B url(../images/button-grad.png) repeat-x scroll left top; border-color: #21759B; color: #fff; } .ac_results { padding: 0; margin: 0; list-style: none; position: absolute; z-index: 10000; display: none; border-width: 1px; border-style: solid; } .ac_results li { padding: 2px 5px; white-space: nowrap; text-align: left; } .ac_over { cursor: pointer; } .ac_match { text-decoration: underline; } #TB_ajaxContent #options { position: absolute; top: 20px; right: 25px; padding: 5px; } #TB_ajaxContent h3 { margin-bottom: .25em; } .updated { margin: 10px 0; padding: 0; border-width: 1px; border-style: solid; width: 99%; } .updated p, .error p { margin: 0.6em 0; padding: 0 0.6em; } .error a { text-decoration: underline; } .updated a { text-decoration: none; padding-bottom: 2px; } #post_status { margin-left: 10px; margin-bottom: 1em; display: block; } /* Footer */ #footer { height: 65px; display: block; width: 640px; padding: 10px 0 0 60px; margin: 0; position: absolute; bottom: 0; font-size: 12px; } #footer p { margin: 0; padding: 7px 0; } #footer p a { text-decoration: none; } #footer p a:hover { text-decoration: underline; } /* Utility Classes */ .centered { text-align: center; } .hidden { display: none; } .postbox input[type="text"], .postbox textarea, .stuffbox input[type="text"], .stuffbox textarea { border-width: 1px; border-style: solid; } /* tag hints */ .taghint { color: #aaa; margin: -17px 0 0 7px; visibility: hidden; } input.newtag ~ div.taghint { visibility: visible; } input.newtag:focus ~ div.taghint { visibility: hidden; } wp-admin/css/theme-editor-rtl.css0000644002347300047320000000003411656660305016614 0ustar vonfabpsacln#templateside{float: left;} wp-admin/css/press-this.css0000644002347300047320000001704211656660306015540 0ustar vonfabpsaclnbody{font:13px "Lucida Grande",Verdana,Arial,"Bitstream Vera Sans",sans-serif;color:#333;margin:0;padding:0;min-width:675px;min-height:400px;}img{border:none;}#wphead{border-top:none;padding-top:4px;background:#444!important;}.tagchecklist span a{background:transparent url(../images/xit.gif) no-repeat 0 0;}#poststuff #edButtonPreview,#poststuff #edButtonHTML{-moz-border-radius:3px 3px 0 0;-webkit-border-top-right-radius:3px;-webkit-border-top-left-radius:3px;-khtml-border-top-right-radius:3px;-khtml-border-top-left-radius:3px;border-top-right-radius:3px;border-top-left-radius:3px;border-style:solid;border-width:1px;cursor:pointer;display:block;height:18px;margin:0 5px 0 0;padding:0 5px 0;font-size:10px;line-height:18px;float:left;}.howto{margin-top:2px;margin-bottom:3px;font-size:11px;font-style:italic;display:block;}input.text{outline-color:-moz-use-text-color;outline-style:none;outline-width:medium;width:100%;}#message{-moz-border-radius:6px;-khtml-border-radius:6px;-webkit-border-radius:6px;border-radius:6px;}div#poststuff{margin:10px;}div.zerosize{border:0 none;height:0;margin:0;overflow:hidden;padding:0;width:0;}#poststuff #edButtonPreview.active,#poststuff #edButtonHTML.active{display:none;}.posting{margin-right:212px;position:relative;}#side-info-column{float:right;width:200px;position:relative;right:0;}#side-info-column .sleeve{padding-top:5px;}#poststuff .inside{font-size:11px;margin:8px;}#poststuff h2,#poststuff h3{font-size:12px;font-weight:bold;line-height:1;margin:0;padding:7px 9px;}#tagsdiv-post_tag h3,#categorydiv h3{cursor:pointer;}h3.tb{text-shadow:0 1px 0 #fff;font-weight:bold;font-size:12px;margin-left:5px;}#TB_window{border:1px solid #333;-moz-border-radius:6px;-khtml-border-radius:6px;-webkit-border-radius:6px;border-radius:6px;}.postbox,.stuffbox{margin-bottom:10px;border-width:1px;border-style:solid;line-height:1;-moz-border-radius:6px;-khtml-border-radius:6px;-webkit-border-radius:6px;border-radius:6px;}.postbox:hover .handlediv,.stuffbox:hover .handlediv{background:transparent url(../images/menu-bits.gif) no-repeat scroll left -111px;}.handlediv{float:right;height:26px;width:23px;}#title,.tbtitle{-moz-border-radius:6px;-khtml-border-radius:6px;-webkit-border-radius:6px;border-radius:6px;border-style:solid;border-width:1px;font-size:1.7em;outline:none;padding:3px 4px;border-color:#dfdfdf;}.tbtitle{font-size:12px;padding:3px;}#title{width:97%;}.editor-container{-moz-border-radius:6px;-khtml-border-radius:6px;-webkit-border-radius:6px;border-radius:6px;border:1px solid #dfdfdf;background-color:#fff;}.postdivrich{padding-top:25px;position:relative;}.actions{float:right;margin:-19px 0 0;}#extra-fields .actions{margin:-15px -5px 0 0;}.actions li{float:left;list-style:none;margin-right:10px;}#extra-fields .button{margin-right:5px;padding:3px 6px;border-radius:10px;-webkit-border-radius:10px;-khtml-border-radius:10px;-moz-border-radius:10px;}.photolist{margin-top:-10px;}#photo_saving{margin:0 8px 8px;vertical-align:middle;}#img_container{background-color:#fff;}#img_container_container{overflow:auto;}#extra-fields{margin-top:10px;position:relative;}#waiting{margin-top:10px;}#extra-fields .postbox{margin-bottom:5px;}#extra-fields .titlewrap{padding:0;overflow:auto;height:100px;}#img_container a{display:block;float:left;overflow:hidden;vertical-align:center;}#img_container img,#img_container a{width:68px;height:68px;}#img_container img{border:none;background-color:#f4f4f4;cursor:pointer;}#img_container a,#img_container a:link,#img_container a:visited{border:1px solid #ccc;display:block;position:relative;}#img_container a:hover,#img_container a:active{border-color:#000;z-index:1000;border-width:2px;margin:-1px;}#embed-code{width:100%;height:98px;}#viewsite{padding:0;margin:0 0 20px 5px;font-size:10px;clear:both;}.wp-hidden-children .wp-hidden-child{display:none;}.category-add input{width:94%;font-family:"Lucida Grande",Verdana,Arial,"Bitstream Vera Sans",sans-serif;font-size:12px;margin:1px;}.category-add select{width:100%;-x-system-font:none;border-style:solid;border-width:1px;font-family:"Lucida Grande",Verdana,Arial,"Bitstream Vera Sans",sans-serif;font-size:11px;height:2em;line-height:20px;padding:2px;margin:1px;vertical-align:top;}.category-add input.category-add-sumbit{width:auto;}.categorydiv div.tabs-panel,#linkcategorydiv div.tabs-panel{height:100px;overflow:auto;padding:.5em .9em;border-style:solid;border-width:1px;}.category-tabs li{display:inline;padding-right:8px;}.category-tabs a{text-decoration:none;}.categorydiv ul,#linkcategorydiv ul{list-style:none;padding:0;margin:0;}.inline-editor ul.cat-checklist ul,.categorydiv ul.categorychecklist ul,#linkcategorydiv ul.categorychecklist ul{margin-left:18px;}ul.categorychecklist li{margin:0;padding:0;line-height:19px;}.categorydiv .tabs-panel{border-width:3px;border-style:solid;}ul.category-tabs{margin-top:12px;margin-bottom:6px;}ul.category-tabs li.tabs{border-style:solid solid none;border-width:1px 1px 0;}ul.category-tabs li{padding:5px 8px;-moz-border-radius:3px 3px 0 0;-webkit-border-top-left-radius:3px;-webkit-border-top-right-radius:3px;-khtml-border-top-left-radius:3px;-khtml-border-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px;}.screen-reader-text{display:none;}.tagsdiv .newtag{margin-right:5px;}.jaxtag{clear:both;margin:0;}.tagadd{margin-left:3px;}.tagchecklist{margin-top:3px;margin-bottom:1em;font-size:12px;overflow:auto;}.tagchecklist strong{position:absolute;font-size:.75em;}.tagchecklist span{margin-right:.5em;margin-left:10px;display:block;float:left;font-size:11px;line-height:1.8em;white-space:nowrap;cursor:default;}.tagchecklist span a{margin:6px 0 0 -9px;cursor:pointer;width:10px;height:10px;display:block;float:left;text-indent:-9999px;overflow:hidden;position:absolute;}#content{margin:5px 0;padding:0 5px;border:0 none;height:365px;width:97%!important;}* html .postdivrich{zoom:1;}#saving{display:inline;vertical-align:middle;}.submit input,.button,.button-primary,.button-secondary,.button-highlighted,#postcustomstuff .submit input{font-family:"Lucida Grande",Verdana,Arial,"Bitstream Vera Sans",sans-serif;text-decoration:none;font-size:11px!important;line-height:16px;padding:2px 8px;cursor:pointer;border-width:1px;border-style:solid;-moz-border-radius:11px;-khtml-border-radius:11px;-webkit-border-radius:11px;border-radius:11px;}.button-primary{background:#21759B url(../images/button-grad.png) repeat-x scroll left top;border-color:#21759B;color:#fff;}.ac_results{padding:0;margin:0;list-style:none;position:absolute;z-index:10000;display:none;border-width:1px;border-style:solid;}.ac_results li{padding:2px 5px;white-space:nowrap;text-align:left;}.ac_over{cursor:pointer;}.ac_match{text-decoration:underline;}#TB_ajaxContent #options{position:absolute;top:20px;right:25px;padding:5px;}#TB_ajaxContent h3{margin-bottom:.25em;}.updated{margin:10px 0;padding:0;border-width:1px;border-style:solid;width:99%;}.updated p,.error p{margin:.6em 0;padding:0 .6em;}.error a{text-decoration:underline;}.updated a{text-decoration:none;padding-bottom:2px;}#post_status{margin-left:10px;margin-bottom:1em;display:block;}#footer{height:65px;display:block;width:640px;padding:10px 0 0 60px;margin:0;position:absolute;bottom:0;font-size:12px;}#footer p{margin:0;padding:7px 0;}#footer p a{text-decoration:none;}#footer p a:hover{text-decoration:underline;}.centered{text-align:center;}.hidden{display:none;}.postbox input[type="text"],.postbox textarea,.stuffbox input[type="text"],.stuffbox textarea{border-width:1px;border-style:solid;}.taghint{color:#aaa;margin:-17px 0 0 7px;visibility:hidden;}input.newtag ~ div.taghint{visibility:visible;}input.newtag:focus ~ div.taghint{visibility:hidden;}wp-admin/css/theme-editor-rtl.dev.css0000644002347300047320000000004011656660306017367 0ustar vonfabpsacln#templateside { float: left; } wp-admin/css/theme-editor.css0000644002347300047320000000155111656660307016024 0ustar vonfabpsacln.alignleft h3{margin:0;}h3 span{font-weight:normal;}#template textarea{font-family:Consolas,Monaco,Courier,monospace;font-size:12px;width:97%;}#template p{width:97%;}#templateside{float:right;width:190px;word-wrap:break-word;}#templateside h3,#postcustomstuff p.submit{margin:0;}#templateside h4{margin:1em 0 0;}#templateside ol,#templateside ul{margin:.5em;padding:0;}#templateside li{margin:4px 0;}#templateside ul li a span.highlight{display:block;}.nonessential{font-size:11px;font-style:italic;padding-left:12px;}.highlight{padding:3px 3px 3px 12px;margin-left:-12px;font-weight:bold;-moz-border-radius:8px;-khtml-border-radius:8px;-webkit-border-radius:8px;border-radius:8px;}div.tablenav{margin-right:210px;}#documentation{margin-top:10px;}#documentation label{line-height:22px;vertical-align:top;font-weight:bold;}.fileedit-sub{padding:10px 0 8px;line-height:180%;}wp-admin/css/theme-install-rtl.css0000644002347300047320000000101411656660307016775 0ustar vonfabpsaclndiv.star{left:auto;right:0;}.star img,div.star a,div.star a:hover,div.star a:visited{right:auto;left:0;}.theme-listing .theme-item h3{font-style:normal;}#theme-information .theme-preview-img{float:right;margin:5px 15px 10px 25px;}#theme-information .action-button #cancel{float:right;}#theme-information .action-button #install{float:left;}.feature-filter .feature-group{float:right;}.feature-filter .feature-name{float:right;text-align:left;}.feature-filter .feature-group li{float:right;padding-right:0;padding-left:25px;}wp-admin/css/theme-editor.dev.css0000644002347300047320000000201311656660307016573 0ustar vonfabpsacln.alignleft h3 { margin: 0; } h3 span { font-weight: normal; } #template textarea { font-family: Consolas, Monaco, Courier, monospace; font-size: 12px; width: 97%; } #template p { width: 97%; } #templateside { float: right; width: 190px; word-wrap: break-word; } #templateside h3, #postcustomstuff p.submit { margin: 0; } #templateside h4 { margin: 1em 0 0; } #templateside ol, #templateside ul { margin: .5em; padding: 0; } #templateside li { margin: 4px 0; } #templateside ul li a span.highlight { display:block; } .nonessential { font-size: 11px; font-style: italic; padding-left: 12px; } .highlight { padding: 3px 3px 3px 12px; margin-left: -12px; font-weight: bold; -moz-border-radius: 8px; -khtml-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; } div.tablenav { margin-right: 210px; } #documentation { margin-top: 10px; } #documentation label { line-height: 22px; vertical-align: top; font-weight: bold; } .fileedit-sub { padding: 10px 0 8px; line-height: 180%; } wp-admin/css/theme-install-rtl.dev.css0000644002347300047320000000113511656660310017550 0ustar vonfabpsaclndiv.star { left:auto; right: 0; } .star img, div.star a, div.star a:hover, div.star a:visited { right: auto; left: 0; } .theme-listing .theme-item h3 { font-style: normal; } #theme-information .theme-preview-img { float: right; margin: 5px 15px 10px 25px; } #theme-information .action-button #cancel { float: right; } #theme-information .action-button #install { float: left; } .feature-filter .feature-group { float: right; } .feature-filter .feature-name { float: right; text-align: left; } .feature-filter .feature-group li { float: right; padding-right: 0; padding-left: 25px; }wp-admin/css/theme-install.dev.css0000644002347300047320000000503211656660310016751 0ustar vonfabpsacln/* NOTE: the following CSS rules(.star*) are taken more or less straight from the bbPress rating plugin. */ div.star-holder { position: relative; height: 19px; width: 100px; font-size: 19px; } div.star { height: 100%; position: absolute; top: 0; left: 0; background-color: transparent; letter-spacing: 1ex; border: none; } .star1 { width: 20%; } .star2 { width: 40%; } .star3 { width: 60%; } .star4 { width: 80%; } .star5 { width: 100%; } .star img, div.star a, div.star a:hover, div.star a:visited { display: block; position: absolute; right: 0; border: none; text-decoration: none; } div.star img { width: 19px; height: 19px; border-left: 1px solid #fff; border-right: 1px solid #fff; } .theme-listing .theme-item { display: inline-block; width: 200px; border: thin solid #ccc; vertical-align: top; } .theme-listing .theme-item h3 { text-align: center; font-size: 14px; font-style: italic; margin: 0; padding: 0; } .theme-listing .theme-item img { max-width: 150px; max-height: 150px; } .theme-listing .theme-item-info span { display: none; } .theme-listing .theme-item:hover .theme-item-info span { display: inline; } .theme-listing .theme-item:hover .theme-item-info span.dots { display: none; } .theme-listing .theme-item-info span.action-links { font-weight: bold; text-align: center; } .theme-listing br.line { border-bottom-width: 1px; border-bottom-style: solid; margin-bottom: 3px; } .available-theme { padding: 20px 15px; } #theme-information .theme-preview-img { float: left; margin: 5px 25px 10px 15px; width: 300px; } #theme-information .action-button { border-top-width: 1px; border-top-style: solid; margin: 10px 5px 0; } #theme-information .action-button #cancel { float: left; margin: 10px 15px; } #theme-information .action-button #install { float: right; margin: 10px 15px; } #theme-information .available-theme h3 { margin: 1em 0; } body#theme-information { height: auto; } .feature-filter { -moz-border-radius: 8px; -khtml-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; border-width: 1px; border-style: solid; padding: 8px 12px 0; } .feature-filter .feature-group { float: left; margin-bottom: 20px; width: 725px; } .feature-filter .feature-name { float: left; text-align: right; width: 95px; } .feature-filter .feature-group li { display: inline; float: left; list-style-type: none; padding-right: 25px; min-width: 145px; } .feature-container { width: 100%; overflow: auto; margin-bottom: 10px; } .feature-group { margin-bottom: 0px !important; }wp-admin/css/theme-install.css0000644002347300047320000000412111656660310016172 0ustar vonfabpsaclndiv.star-holder{position:relative;height:19px;width:100px;font-size:19px;}div.star{height:100%;position:absolute;top:0;left:0;background-color:transparent;letter-spacing:1ex;border:none;}.star1{width:20%;}.star2{width:40%;}.star3{width:60%;}.star4{width:80%;}.star5{width:100%;}.star img,div.star a,div.star a:hover,div.star a:visited{display:block;position:absolute;right:0;border:none;text-decoration:none;}div.star img{width:19px;height:19px;border-left:1px solid #fff;border-right:1px solid #fff;}.theme-listing .theme-item{display:inline-block;width:200px;border:thin solid #ccc;vertical-align:top;}.theme-listing .theme-item h3{text-align:center;font-size:14px;font-style:italic;margin:0;padding:0;}.theme-listing .theme-item img{max-width:150px;max-height:150px;}.theme-listing .theme-item-info span{display:none;}.theme-listing .theme-item:hover .theme-item-info span{display:inline;}.theme-listing .theme-item:hover .theme-item-info span.dots{display:none;}.theme-listing .theme-item-info span.action-links{font-weight:bold;text-align:center;}.theme-listing br.line{border-bottom-width:1px;border-bottom-style:solid;margin-bottom:3px;}.available-theme{padding:20px 15px;}#theme-information .theme-preview-img{float:left;margin:5px 25px 10px 15px;width:300px;}#theme-information .action-button{border-top-width:1px;border-top-style:solid;margin:10px 5px 0;}#theme-information .action-button #cancel{float:left;margin:10px 15px;}#theme-information .action-button #install{float:right;margin:10px 15px;}#theme-information .available-theme h3{margin:1em 0;}body#theme-information{height:auto;}.feature-filter{-moz-border-radius:8px;-khtml-border-radius:8px;-webkit-border-radius:8px;border-radius:8px;border-width:1px;border-style:solid;padding:8px 12px 0;}.feature-filter .feature-group{float:left;margin-bottom:20px;width:725px;}.feature-filter .feature-name{float:left;text-align:right;width:95px;}.feature-filter .feature-group li{display:inline;float:left;list-style-type:none;padding-right:25px;min-width:145px;}.feature-container{width:100%;overflow:auto;margin-bottom:10px;}.feature-group{margin-bottom:0!important;}wp-admin/css/widgets-rtl.css0000644002347300047320000000036711656660310015701 0ustar vonfabpsacln#widget-list .widget,#wp_inactive_widgets .widget{float:right;}ul#widget-list li.widget-list-item div.widget-description{margin:0 200px 0 0;padding:0 4em 0 0;}.widget-control-save,.widget-control-remove{margin-right:0;margin-left:8px;float:right;}wp-admin/css/widgets-rtl.dev.css0000644002347300047320000000042411656660310016450 0ustar vonfabpsacln#widget-list .widget, #wp_inactive_widgets .widget { float: right; } ul#widget-list li.widget-list-item div.widget-description { margin: 0 200px 0 0; padding: 0 4em 0 0; } .widget-control-save, .widget-control-remove { margin-right: 0; margin-left: 8px; float: right; } wp-admin/css/widgets.css0000644002347300047320000001300011656660311015067 0ustar vonfabpsaclnhtml,body{min-width:950px;}div.widget-liquid-left{float:left;clear:left;width:100%;margin-right:-325px;}div#widgets-left{margin-left:5px;margin-right:325px;}div#widgets-right{width:285px;margin:0 auto;}div.widget-liquid-right{float:right;clear:right;width:300px;}.widget-liquid-right .widget,#wp_inactive_widgets .widget,.widget-liquid-right .sidebar-description{width:250px;margin:0 auto 20px;overflow:hidden;}.widget-liquid-right .sidebar-description{margin-bottom:10px;}#wp_inactive_widgets .widget{margin:0 10px 20px;float:left;}div.sidebar-name h3{margin:0;padding:5px 12px;font-size:13px;height:19px;overflow:hidden;white-space:nowrap;}div.sidebar-name{background-repeat:repeat-x;background-position:0 0;cursor:pointer;font-size:13px;border-width:1px;border-style:solid;-moz-border-radius-topleft:8px;-moz-border-radius-topright:8px;-webkit-border-top-right-radius:8px;-webkit-border-top-left-radius:8px;-khtml-border-top-right-radius:8px;-khtml-border-top-left-radius:8px;border-top-right-radius:8px;border-top-left-radius:8px;}.js .closed .sidebar-name{-moz-border-radius-bottomleft:8px;-moz-border-radius-bottomright:8px;-webkit-border-bottom-right-radius:8px;-webkit-border-bottom-left-radius:8px;-khtml-border-bottom-right-radius:8px;-khtml-border-bottom-left-radius:8px;border-bottom-right-radius:8px;border-bottom-left-radius:8px;}.widget-liquid-right .widgets-sortables,#widgets-left .widget-holder{border-width:0 1px 1px;border-style:none solid solid;-moz-border-radius-bottomleft:8px;-moz-border-radius-bottomright:8px;-webkit-border-bottom-right-radius:8px;-webkit-border-bottom-left-radius:8px;-khtml-border-bottom-right-radius:8px;-khtml-border-bottom-left-radius:8px;border-bottom-right-radius:8px;border-bottom-left-radius:8px;}.js .closed .widgets-sortables,.js .closed .widget-holder{display:none;}.widget-liquid-right .widgets-sortables{padding:15px 0 0;}#available-widgets .widget-holder{padding:7px 5px 0;}#wp_inactive_widgets{padding:5px 5px 0;}#widget-list .widget{width:250px;margin:0 10px 15px;border:0 none;float:left;}#widget-list .widget-description{padding:5px 8px;}#widget-list .widget-top{border-width:1px;border-style:solid;-moz-border-radius:6px;-khtml-border-radius:6px;-webkit-border-radius:6px;border-radius:6px;}.widget-placeholder{border-width:1px;border-style:dashed;margin:0 auto 20px;height:26px;width:250px;}#wp_inactive_widgets .widget-placeholder{margin:0 10px 20px;float:left;}div.widgets-holder-wrap{padding:0;margin:10px 0 20px;}#widgets-left #available-widgets{background-color:transparent;border:0 none;}ul#widget-list{list-style:none;margin:0;padding:0;min-height:100px;}.widget .widget-top{font-size:12px;font-weight:bold;height:26px;overflow:hidden;}.widget-top .widget-title{padding:5px 9px;}.widget-top .widget-title-action{float:right;}a.widget-action{display:block;width:24px;height:26px;}#available-widgets a.widget-action{display:none;}.widget-top a.widget-action{background:url("../images/menu-bits.gif?ver=20100610") no-repeat scroll 0 -110px;}.widget .widget-inside,.widget .widget-description{padding:12px 12px 10px;font-size:11px;line-height:16px;}.widget-inside,.widget-description{display:none;}#available-widgets .widget-description{display:block;}.widget .widget-inside p{margin:0 0 1em;padding:0;}.widget-title h4{margin:0;line-height:1.3;overflow:hidden;white-space:nowrap;}.widgets-sortables{min-height:90px;}.widget-control-actions{margin-top:8px;}.widget-control-actions a{text-decoration:none;}.widget-control-actions a:hover{text-decoration:underline;}.widget-control-actions .ajax-feedback{padding-bottom:3px;}.widget-control-actions div.alignleft{margin-top:6px;}div#sidebar-info{padding:0 1em;margin-bottom:1em;font-size:11px;}.widget-title a,.widget-title a:hover{text-decoration:none;border-bottom:none;}.widget-control-edit{display:block;font-size:11px;font-weight:normal;line-height:26px;padding:0 8px 0 0;}a.widget-control-edit{text-decoration:none;}.widget-control-edit .add,.widget-control-edit .edit{display:none;}#available-widgets .widget-control-edit .add,#widgets-right .widget-control-edit .edit,#wp_inactive_widgets .widget-control-edit .edit{display:inline;}.editwidget{margin:0 auto 15px;}.editwidget .widget-inside{display:block;border-width:1px;border-style:solid;padding:10px;-moz-border-radius:6px;-khtml-border-radius:6px;-webkit-border-radius:6px;border-radius:6px;}.inactive p.description{margin:5px 15px 8px;}#available-widgets p.description{margin:0 12px 12px;}.widget-position{margin-top:8px;}.inactive{padding-top:2px;}.sidebar-name-arrow{float:right;height:29px;width:26px;}.widget-title .in-widget-title{font-size:11px;white-space:nowrap;}#removing-widget{display:none;font-weight:normal;padding-left:15px;font-size:12px;}.widget-control-noform,#access-off,.widgets_access .widget-action,.widgets_access .sidebar-name-arrow,.widgets_access #access-on,.widgets_access .widget-holder .description{display:none;}.widgets_access .widget-holder,.widgets_access #widget-list{padding-top:10px;}.widgets_access #access-off{display:inline;}.widgets_access #wpbody-content .widget-title-action,.widgets_access #wpbody-content .widget-control-edit,.widgets_access .closed .widgets-sortables,.widgets_access .closed .widget-holder{display:block;}.widgets_access .closed .sidebar-name{-moz-border-radius-bottomleft:0;-moz-border-radius-bottomright:0;-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:0;-khtml-border-bottom-right-radius:0;-khtml-border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0;}.widgets_access .sidebar-name,.widgets_access .widget .widget-top{cursor:default;}wp-admin/css/widgets.dev.css0000644002347300047320000001442311656660311015656 0ustar vonfabpsaclnhtml, body { min-width: 950px; } /* 2 column liquid layout */ div.widget-liquid-left { float: left; clear: left; width: 100%; margin-right: -325px; } div#widgets-left { margin-left: 5px; margin-right: 325px; } div#widgets-right { width: 285px; margin: 0 auto; } div.widget-liquid-right { float: right; clear: right; width: 300px; } .widget-liquid-right .widget, #wp_inactive_widgets .widget, .widget-liquid-right .sidebar-description { width: 250px; margin: 0 auto 20px; overflow: hidden; } .widget-liquid-right .sidebar-description { margin-bottom: 10px; } #wp_inactive_widgets .widget { margin: 0 10px 20px; float: left; } div.sidebar-name h3 { margin: 0; padding: 5px 12px; font-size: 13px; height: 19px; overflow: hidden; white-space: nowrap; } div.sidebar-name { background-repeat: repeat-x; background-position: 0 0; cursor: pointer; font-size: 13px; border-width: 1px; border-style: solid; -moz-border-radius-topleft: 8px; -moz-border-radius-topright: 8px; -webkit-border-top-right-radius: 8px; -webkit-border-top-left-radius: 8px; -khtml-border-top-right-radius: 8px; -khtml-border-top-left-radius: 8px; border-top-right-radius: 8px; border-top-left-radius: 8px; } .js .closed .sidebar-name { -moz-border-radius-bottomleft: 8px; -moz-border-radius-bottomright: 8px; -webkit-border-bottom-right-radius: 8px; -webkit-border-bottom-left-radius: 8px; -khtml-border-bottom-right-radius: 8px; -khtml-border-bottom-left-radius: 8px; border-bottom-right-radius: 8px; border-bottom-left-radius: 8px; } .widget-liquid-right .widgets-sortables, #widgets-left .widget-holder { border-width: 0 1px 1px; border-style: none solid solid; -moz-border-radius-bottomleft: 8px; -moz-border-radius-bottomright: 8px; -webkit-border-bottom-right-radius: 8px; -webkit-border-bottom-left-radius: 8px; -khtml-border-bottom-right-radius: 8px; -khtml-border-bottom-left-radius: 8px; border-bottom-right-radius: 8px; border-bottom-left-radius: 8px; } .js .closed .widgets-sortables, .js .closed .widget-holder { display: none; } .widget-liquid-right .widgets-sortables { padding: 15px 0 0; } #available-widgets .widget-holder { padding: 7px 5px 0; } #wp_inactive_widgets { padding: 5px 5px 0; } #widget-list .widget { width: 250px; margin: 0 10px 15px; border: 0 none; float: left; } #widget-list .widget-description { padding: 5px 8px; } #widget-list .widget-top { border-width: 1px; border-style: solid; -moz-border-radius: 6px; -khtml-border-radius: 6px; -webkit-border-radius: 6px; border-radius: 6px; } .widget-placeholder { border-width: 1px; border-style: dashed; margin: 0 auto 20px; height: 26px; width: 250px; } #wp_inactive_widgets .widget-placeholder { margin: 0 10px 20px; float: left; } div.widgets-holder-wrap { padding: 0; margin: 10px 0 20px; } #widgets-left #available-widgets { background-color: transparent; border: 0 none; } ul#widget-list { list-style: none; margin: 0; padding: 0; min-height: 100px; } .widget .widget-top { font-size: 12px; font-weight: bold; height: 26px; overflow: hidden; } .widget-top .widget-title { padding: 5px 9px; } .widget-top .widget-title-action { float: right; } a.widget-action { display: block; width: 24px; height: 26px; } #available-widgets a.widget-action { display: none; } .widget-top a.widget-action { background: url("../images/menu-bits.gif?ver=20100610") no-repeat scroll 0 -110px; } .widget .widget-inside, .widget .widget-description { padding: 12px 12px 10px; font-size: 11px; line-height: 16px; } .widget-inside, .widget-description { display: none; } #available-widgets .widget-description { display: block; } .widget .widget-inside p { margin: 0 0 1em; padding: 0; } .widget-title h4 { margin: 0; line-height: 1.3; overflow: hidden; white-space: nowrap; } .widgets-sortables { min-height: 90px; } .widget-control-actions { margin-top: 8px; } .widget-control-actions a { text-decoration: none; } .widget-control-actions a:hover { text-decoration: underline; } .widget-control-actions .ajax-feedback { padding-bottom: 3px; } .widget-control-actions div.alignleft { margin-top: 6px; } div#sidebar-info { padding: 0 1em; margin-bottom: 1em; font-size: 11px; } .widget-title a, .widget-title a:hover { text-decoration: none; border-bottom: none; } .widget-control-edit { display: block; font-size: 11px; font-weight: normal; line-height: 26px; padding: 0 8px 0 0; } a.widget-control-edit { text-decoration: none; } .widget-control-edit .add, .widget-control-edit .edit { display: none; } #available-widgets .widget-control-edit .add, #widgets-right .widget-control-edit .edit, #wp_inactive_widgets .widget-control-edit .edit { display: inline; } .editwidget { margin: 0 auto 15px; } .editwidget .widget-inside { display: block; border-width: 1px; border-style: solid; padding: 10px; -moz-border-radius: 6px; -khtml-border-radius: 6px; -webkit-border-radius: 6px; border-radius: 6px; } .inactive p.description { margin: 5px 15px 8px; } #available-widgets p.description { margin: 0 12px 12px; } .widget-position { margin-top: 8px; } .inactive { padding-top: 2px; } .sidebar-name-arrow { float: right; height: 29px; width: 26px; } .widget-title .in-widget-title { font-size: 11px; white-space: nowrap; } #removing-widget { display: none; font-weight: normal; padding-left: 15px; font-size: 12px; } .widget-control-noform, #access-off, .widgets_access .widget-action, .widgets_access .sidebar-name-arrow, .widgets_access #access-on, .widgets_access .widget-holder .description { display: none; } .widgets_access .widget-holder, .widgets_access #widget-list { padding-top: 10px; } .widgets_access #access-off { display: inline; } .widgets_access #wpbody-content .widget-title-action, .widgets_access #wpbody-content .widget-control-edit, .widgets_access .closed .widgets-sortables, .widgets_access .closed .widget-holder { display: block; } .widgets_access .closed .sidebar-name { -moz-border-radius-bottomleft: 0; -moz-border-radius-bottomright: 0; -webkit-border-bottom-right-radius: 0; -webkit-border-bottom-left-radius: 0; -khtml-border-bottom-right-radius: 0; -khtml-border-bottom-left-radius: 0; border-bottom-right-radius: 0; border-bottom-left-radius: 0; } .widgets_access .sidebar-name, .widgets_access .widget .widget-top { cursor: default; } wp-admin/css/wp-admin-rtl.css0000644002347300047320000002700111656660311015742 0ustar vonfabpsaclntd.available-theme{text-align:right;}#current-theme img{float:right;margin-right:0;margin-left:1em;}.quicktags,.search{font-family:Tahoma,Arial,sans-serif;}#doaction,#doaction2,#post-query-submit{margin-right:0;margin-left:8px;}#save-post{float:right;}#minor-publishing .ajax-loading{padding:3px 4px 0 0;float:right;}.preview{float:left;}#sticky-span{margin-left:0;margin-right:18px;}#post-body .misc-pub-section{border-right-width:0;border-left-width:1px;border-right-style:none;border-left-style:solid;float:right;}#post-body .misc-pub-section-last{border-left:0;}#delete-action{text-align:right;float:right;}#publishing-action{text-align:left;float:left;}.side-info ul{padding-left:0;padding-right:18px;}.submit input,.button,.button-primary,.button-secondary,.button-highlighted,#postcustomstuff .submit input{font-family:Tahoma,Arial,sans-serif;}#wpcontent select{font-family:Tahoma,Arial,sans-serif;}#quicktags{background-position:right top;}#template div{margin-right:0;margin-left:190px;}* html #template div{margin-left:0;}.list-ajax-loading{float:left;margin-right:0;margin-left:9px;}#your-profile legend{font-family:Tahoma,Arial,sans-serif;}#ajax-response.alignleft{margin-left:0;margin-right:2em;}.page-numbers{margin-right:0;margin-left:1px;}.column-author img,.column-username img{float:right;margin-right:0;margin-left:10px;}.tablenav a.button-secondary{margin-right:0;margin-left:8px;}.tablenav .actions{padding-right:0;padding-left:8px;}.tablenav .tablenav-pages{float:left;}.tablenav .displaying-num{margin-right:0;margin-left:10px;font-family:Tahoma,Arial,sans-serif;font-style:normal;}#postcustomstuff table input,#postcustomstuff table select,#postcustomstuff table textarea{margin:8px 8px 8px 0;}#pass-strength-result{float:right;margin:12px 1px 5px 5px;}#user_info{float:left;}#header-logo{float:right;margin:7px 15px 0 0;}#wphead h1{font-family:Tahoma,Arial,sans-serif;float:right;}#wphead h1.long-title{font-family:Tahoma,Arial,sans-serif;}#adminmenu .wp-submenu a{padding-left:0;padding-right:12px;border-width:0 0 0 1px;border-style:none none none solid;font-family:Tahoma,Arial,sans-serif;}#adminmenu a.menu-top,#adminmenu .wp-submenu-head{font-family:Tahoma,Arial,sans-serif;}#adminmenu img.wp-menu-image{float:right;}.folded #adminmenu img.wp-menu-image{padding:7px 6px 0 0;}#adminmenu a.separator{cursor:e-resize;}.folded #adminmenu a.separator{cursor:w-resize;}#adminmenu .wp-submenu .wp-submenu-head{padding:6px 10px 6px 4px;}.folded #adminmenu .wp-submenu{margin:-1px 28px 0 0;}.folded #adminmenu .wp-submenu a{padding-left:0;padding-right:10px;}.folded #adminmenu a.wp-has-submenu{margin-left:0;margin-right:40px;}#adminmenu .wp-menu-toggle{float:left;padding:1px 0 0 2px;clear:left;}#adminmenu div.wp-menu-image{float:right;}#wphead-info{margin:0 15px 0 0;padding-right:0;padding-left:15px;}#adminmenu #awaiting-mod,#adminmenu span.update-plugins,#sidemenu li a span.update-plugins{font-family:Tahoma,Arial,sans-serif;margin-left:0;margin-right:7px;}.post-com-count-wrapper{font-family:Tahoma,Arial,sans-serif;}.column-response .post-com-count{float:right;margin-right:0;margin-left:5px;}.form-table th{text-align:right;}.form-table input.tog{margin-right:0;margin-left:2px;float:right;}.form-table table.color-palette{float:right;}#profile-page .form-table #rich_editing{margin-right:0;margin-left:5px;}#normal-sortables .postbox .submit{float:left;}#post-body .tagsdiv #newtag{margin-right:0;margin-left:5px;}#post-status-info{padding:0 7px 0 15px;}#comment-status-radio input{margin:2px 0 5px 3px;}.tagchecklist{margin-left:0;margin-right:10px;}.tagchecklist strong{margin-left:0;margin-right:-8px;}.tagchecklist span{float:right;}.tagchecklist span a{margin:6px -9px 0 0;float:right;}.ac_results li{text-align:right;}#poststuff h2{clear:right;}.description,.form-wrap p{font-family:Tahoma,Arial,sans-serif;}.sorting-indicator{margin-left:0;margin-right:7px;}th.sortable a span,th.sorted a span{float:right;}.fixed .column-comments a{float:right;}.autosave-info{padding:2px 2px 2px 15px;text-align:left;}.meta-box-sortables .postbox .handlediv{float:left;}.howto{font-family:Tahoma,Arial,sans-serif;}.postarea h3 label{float:right;}.postarea #add-media-button{float:left;right:auto;left:10px;}.wp_themeSkin tr.mceFirst td.mceToolbar{background-position:right top;}#poststuff #edButtonPreview,#poststuff #edButtonHTML{margin:5px 0 0 5px;float:left;}#poststuff #edButtonHTML{margin-right:0;margin-left:15px;}#media-buttons a{padding:0 10px 5px 0;}.submitbox .submit{text-align:right;}.inside-submitbox #post_status{margin:2px -2px 2px 0;}.submitbox .submit input{margin-right:0;margin-left:4px;}.category-adder{margin-left:0;margin-right:120px;}#post-body ul.category-tabs li.tabs,#post-body ul.add-menu-item-tabs li.tabs{-moz-border-radius:0 3px 3px 0;-webkit-border-top-left-radius:0;-webkit-border-top-right-radius:3px;-webkit-border-bottom-left-radius:0;-webkit-border-bottom-right-radius:3px;border-top-left-radius:0;border-top-right-radius:3px;border-bottom-left-radius:0;border-bottom-right-radius:3px;}#post-body ul.category-tabs,#post-body ul.add-menu-item-tabs{float:right;text-align:left;margin:0 0 0 -120px;}#post-body .categorydiv div.tabs-panel,#post-body .taxonomy div.tabs-panel,#post-body #linkcategorydiv div.tabs-panel{margin:0 120px 0 5px;}#front-page-warning,#front-static-pages ul,.inline-editor ul.cat-checklist ul,.categorydiv ul.categorychecklist ul,.customlinkdiv ul.categorychecklist ul,.posttypediv ul.categorychecklist ul,.taxonomydiv ul.categorychecklist ul,#linkcategorydiv ul.categorychecklist ul{margin-left:0;margin-right:18px;}p.search-box{float:left;}#posts-filter fieldset{float:right;margin:0 0 1em 1.5ex;}#posts-filter fieldset legend{padding:0 1px .2em 0;}.view-switch{float:left;}.filter{float:right;margin:-5px 10px 0 0;}#the-comment-list td.comment p.comment-author{margin-right:0;}#the-comment-list p.comment-author img{float:right;margin-right:0;margin-left:8px;}.tablenav .delete{margin-right:0;margin-left:20px;}td.action-links,th.action-links{text-align:left;}.filter .subsubsub{margin-left:0;margin-right:-10px;}#wp-word-count{margin-right:10px;}.tool-box .title{font-family:Tahoma,Arial,sans-serif;}.settings-toggle{text-align:left;margin:5px 0 15px 7px;}.curtime #timestamp{background-position:right top;padding-left:0;padding-right:18px;}#sidemenu{margin:-30px 315px 0 15px;float:left;padding-left:0;padding-right:10px;}#sidemenu a{float:right;}#replysubmit .button{margin-right:0;margin-left:5px;}#edithead .inside{float:right;margin:3px 5px 2px 0;}#replyrow #ed_reply_toolbar input{margin:1px 1px 1px 2px;}#screen-meta-links{margin:0 0 0 18px;}#screen-options-link-wrap,#contextual-help-link-wrap{float:left;font-family:Tahoma,Arial,sans-serif;margin:0 0 0 6px;}#contextual-help-wrap li{margin-left:0;margin-right:18px;}#screen-meta a.show-settings{padding:0 6px 0 16px;background-position:left top;}.metabox-prefs label{padding-right:0;padding-left:15px;}.metabox-prefs label input{margin:0 2px 0 5px;}.inline-editor .save,.inline-editor .cancel{margin-right:0;margin-left:5px;}#replysubmit img.waiting,.inline-edit-save img.waiting{float:left;}.trash-undo-inside,.spam-undo-inside,.spam-undo-inside .avatar,.trash-undo-inside .avatar{margin-right:0;margin-left:8px;}#bulk-titles div a{float:right;margin:3px -2px 0 3px;}#wpbody-content .filename{margin-left:0;margin-right:10px;}#wpbody-content .inline-edit-row fieldset{float:right;}#wpbody-content .quick-edit-row-page fieldset.inline-edit-col-right .inline-edit-col{border-left:0 none;border-right:1px solid;}#wpbody-content .bulk-edit-row .inline-edit-col-bottom{float:left;}.inline-edit-row fieldset label span.title{float:right;}.inline-edit-row fieldset label span.input-text-wrap{margin-left:0;margin-right:5em;}.quick-edit-row-post fieldset.inline-edit-col-right label span.title{padding-right:0;padding-left:.5em;}#wpbody-content .quick-edit-row fieldset .inline-edit-group label.alignleft:first-child{margin-right:0;margin-left:.5em;}.inline-edit-row fieldset span.title,.inline-edit-row fieldset span.checkbox-title{font-family:Tahoma,Arial,sans-serif;}.inline-edit-row fieldset .inline-edit-date{float:right;}.inline-edit-row fieldset ul.cat-checklist label,.inline-edit-row .catshow,.inline-edit-row .cathide,.inline-edit-row #bulk-titles div{font-family:Tahoma,Arial,sans-serif;}.quick-edit-row-post fieldset label.inline-edit-status{float:right;}.describe-toggle-on,.describe-toggle-off{float:left;margin-right:0;margin-left:20px;}#wpbody-content #media-items .filename{float:right;margin-left:0;margin-right:10px;}.media-item .pinkynail{float:right;}#find-posts-response .found-radio{padding:8px 8px 0 0;}.find-box-buttons{left:auto;right:12px;}.find-box-search label{padding-right:0;padding-left:6px;}#favorite-actions{float:left;}#favorite-first{padding:3px 12px 4px 30px;}#favorite-inside a{padding:3px 10px 3px 5px;}#favorite-toggle{right:auto;left:0;background:transparent url(../images/fav-arrow-rtl.gif?ver=20100531) no-repeat 10px -4px;}#utc-time,#local-time{padding-left:0;padding-right:25px;font-family:Tahoma,Arial;}.icon32{float:right;margin:14px 0 0 6px;}.subtitle{padding-left:0;padding-right:25px;}ol{list-style-type:decimal;margin-left:0;margin-right:2em;}.postbox-container{float:right;padding-left:.5%;padding-right:0;}#wpbody-content .describe th{text-align:right;}.describe .media-item-info .A1B1{padding:0 10px 0 0;}.media-upload-form td label{margin-left:6px;margin-right:2px;}.media-upload-form .align .field label{padding:0 22px 0 0;margin:0 0 0 1em;}.media-upload-form tr.image-size label{margin:0 3px 0 0;}#wpbody-content .describe p.help{padding:0 5px 0 0;}.media-item .error-div a.dismiss,.describe-toggle-on,.describe-toggle-off{float:left;margin-right:0;margin-left:20px;}.describe-toggle-on,.describe-toggle-off{float:left;margin-left:20px;margin-right:0;}.media-item .error-div{padding-left:0;padding-right:10px;}.media-item .pinkynail{float:right;}.crunching{text-align:left;margin-left:5px;margin-right:0;}.bar{border-left-width:3px;border-left-style:solid;border-right:none;}.clearlooks2 .mceTop .mceLeft{width:100%!important;}.taghint{margin:15px 12px -24px 0;}#poststuff .tagsdiv .howto{margin:0 8px 6px 0;}#broken-themes{text-align:right;}.describe .del-link{padding-right:5px;padding-left:0;}.comment-ays th{border-left-style:solid;border-left-width:1px;}.appearance_page_custom-header #available-headers .default-header{float:right;margin:0 0 20px 20px;}.appearance_page_custom-header #available-headers label input{margin-right:0;margin-left:10px;}#custom-background label{padding-right:0;padding-left:15px;}#author-email,#author-url,#rss-url-1,#edit-slug-box,#post_name,#trackback_url,#metakeyinput,#post_password,#slug,#category_nicename,#link_url,#link_image,#rss_uri,#menu_order,#email,#newcomment_author_url,#pages-exclude,#template textarea,#user_login,#url,#pass1,#pass2,#aim,#yim,#jabber,#siteurl,#home,#admin_email,#gmt_offset,#default_post_edit_rows,#mailserver_url,#mailserver_login,#mailserver_pass,#mailserver_port,#ping_sites,#posts_per_page,#posts_per_rss,#blog_charset,#close_comments_days_old,#comments_per_page,#comment_max_links,#moderation_keys,#blacklist_keys,#thumbnail_size_w,#thumbnail_size_h,#medium_size_w,#medium_size_h,#large_size_w,#large_size_h,#permalink_structure,#category_base,#tag_base,#upload_path,#upload_url_path,#rules{direction:ltr;}#quicktags #ed_em,#ed_reply_toolbar #ed_reply_em,.tablenav .displaying-num,#footer,#footer a,p.help,p.description,span.description,.form-wrap p,#side-sortables .comments-box thead th,#normal-sortables .comments-box thead th,.howto,.inline-edit-row fieldset span.title,.inline-edit-row fieldset span.checkbox-title,#utc-time,#local-time,form.upgrade .hint,p.install-help,.imgedit-help{font-style:normal;}wp-admin/css/wp-admin-rtl.dev.css0000644002347300047320000003411311656660311016521 0ustar vonfabpsacln/* 0 - 200 =================================== */ td.available-theme { text-align: right; } #current-theme img { float: right; margin-right: 0; margin-left: 1em; } .quicktags, .search { font-family: Tahoma, Arial, sans-serif; } /* 200 - 500 =================================== */ #doaction, #doaction2, #post-query-submit { margin-right: 0; margin-left: 8px; } #save-post { float: right; } #minor-publishing .ajax-loading { padding: 3px 4px 0 0; float: right; } .preview { float: left; } #sticky-span { margin-left: 0; margin-right: 18px; } #post-body .misc-pub-section { border-right-width: 0; border-left-width: 1px; border-right-style: none; border-left-style: solid; float: right; } #post-body .misc-pub-section-last { border-left: 0; } #delete-action { text-align: right; float: right; } #publishing-action { text-align: left; float: left; } .side-info ul { padding-left: 0; padding-right: 18px; } .submit input, .button, .button-primary, .button-secondary, .button-highlighted, #postcustomstuff .submit input { font-family: Tahoma, Arial, sans-serif; } #wpcontent select { font-family: Tahoma, Arial, sans-serif; } #quicktags { background-position: right top; } /* 500 - 700 =================================== */ #template div { margin-right: 0; margin-left: 190px; } * html #template div { margin-left: 0; } .list-ajax-loading { float: left; margin-right: 0; margin-left: 9px; } #your-profile legend { font-family: Tahoma, Arial, sans-serif; } #ajax-response.alignleft { margin-left: 0; margin-right: 2em; } .page-numbers { margin-right: 0; margin-left: 1px; } .column-author img, .column-username img { float: right; margin-right: 0; margin-left: 10px; } .tablenav a.button-secondary { margin-right: 0; margin-left: 8px; } .tablenav .actions { padding-right: 0; padding-left: 8px; } .tablenav .tablenav-pages { float: left; } .tablenav .displaying-num { margin-right: 0; margin-left: 10px; font-family: Tahoma, Arial, sans-serif; font-style: normal; } #postcustomstuff table input, #postcustomstuff table select, #postcustomstuff table textarea { margin: 8px 8px 8px 0; } /* 700 - 1000 =================================== */ #pass-strength-result { float: right; margin: 12px 1px 5px 5px; } /* Admin Header */ #user_info { float: left; } #header-logo { float: right; margin: 7px 15px 0 0; } #wphead h1 { font-family: Tahoma, Arial, sans-serif; float: right; } #wphead h1.long-title { font-family: Tahoma, Arial, sans-serif; } #adminmenu .wp-submenu a { padding-left: 0; padding-right: 12px; border-width: 0 0 0 1px; border-style: none none none solid; font-family: Tahoma, Arial, sans-serif; } #adminmenu a.menu-top, #adminmenu .wp-submenu-head { font-family: Tahoma, Arial, sans-serif; } #adminmenu img.wp-menu-image { float: right; } .folded #adminmenu img.wp-menu-image { padding: 7px 6px 0 0; } #adminmenu a.separator { cursor: e-resize; } .folded #adminmenu a.separator { cursor: w-resize; } #adminmenu .wp-submenu .wp-submenu-head { padding: 6px 10px 6px 4px; } .folded #adminmenu .wp-submenu { margin: -1px 28px 0 0; } .folded #adminmenu .wp-submenu a { padding-left: 0; padding-right: 10px; } .folded #adminmenu a.wp-has-submenu { margin-left: 0; margin-right: 40px; } #adminmenu .wp-menu-toggle { float: left; padding: 1px 0 0 2px; clear: left; } #adminmenu div.wp-menu-image { float: right; } #wphead-info { margin: 0 15px 0 0; padding-right:0; padding-left: 15px; } /* end side admin menu */ /* 1000 - 1300 =================================== */ #adminmenu #awaiting-mod, #adminmenu span.update-plugins, #sidemenu li a span.update-plugins { font-family: Tahoma, Arial, sans-serif; margin-left: 0; margin-right: 7px; } .post-com-count-wrapper { font-family: Tahoma, Arial, sans-serif; } .column-response .post-com-count { float: right; margin-right: 0; margin-left: 5px; } /* Tables used on comment.php and option/setting pages */ .form-table th { text-align: right; } .form-table input.tog { margin-right: 0; margin-left: 2px; float: right; } .form-table table.color-palette { float: right; } #profile-page .form-table #rich_editing { margin-right: 0; margin-left: 5px; } /* Post Screen */ /* 1300 - 1500 =================================== */ #normal-sortables .postbox .submit { float: left; } #post-body .tagsdiv #newtag { margin-right: 0; margin-left: 5px; } #post-status-info { padding: 0 7px 0 15px; } #comment-status-radio input { margin: 2px 0 5px 3px; } .tagchecklist { margin-left: 0; margin-right: 10px; } .tagchecklist strong { margin-left: 0; margin-right: -8px; } .tagchecklist span { float: right; } .tagchecklist span a { margin: 6px -9px 0 0; float: right; } .ac_results li { text-align: right; } #poststuff h2 { clear: right; } .description, .form-wrap p { font-family: Tahoma, Arial, sans-serif; } .sorting-indicator { margin-left: 0; margin-right: 7px; } th.sortable a span, th.sorted a span { float: right; } .fixed .column-comments a { float: right; } /* 1500 - 1800 =================================== */ .autosave-info { padding: 2px 2px 2px 15px; text-align: left; } .meta-box-sortables .postbox .handlediv { float: left; } .howto { font-family: Tahoma, Arial, sans-serif; } .postarea h3 label { float: right; } .postarea #add-media-button { float: left; right: auto; left: 10px; } .wp_themeSkin tr.mceFirst td.mceToolbar { background-position: right top; } #poststuff #edButtonPreview, #poststuff #edButtonHTML { margin: 5px 0 0 5px; float: left; } #poststuff #edButtonHTML { margin-right: 0; margin-left: 15px; } #media-buttons a { padding: 0 10px 5px 0; } .submitbox .submit { text-align: right; } .inside-submitbox #post_status { margin: 2px -2px 2px 0; } .submitbox .submit input { margin-right: 0; margin-left: 4px; } /* Categories */ .category-adder { margin-left: 0; margin-right: 120px; } #post-body ul.category-tabs li.tabs, #post-body ul.add-menu-item-tabs li.tabs { -moz-border-radius: 0 3px 3px 0; -webkit-border-top-left-radius: 0; -webkit-border-top-right-radius: 3px; -webkit-border-bottom-left-radius: 0; -webkit-border-bottom-right-radius: 3px; border-top-left-radius: 0; border-top-right-radius: 3px; border-bottom-left-radius: 0; border-bottom-right-radius: 3px; } #post-body ul.category-tabs, #post-body ul.add-menu-item-tabs { float: right; text-align: left; margin: 0 0 0 -120px; } #post-body .categorydiv div.tabs-panel, #post-body .taxonomy div.tabs-panel, #post-body #linkcategorydiv div.tabs-panel { margin: 0 120px 0 5px; } /* 1800 - 2000 =================================== */ #front-page-warning, #front-static-pages ul, .inline-editor ul.cat-checklist ul, .categorydiv ul.categorychecklist ul, .customlinkdiv ul.categorychecklist ul, .posttypediv ul.categorychecklist ul, .taxonomydiv ul.categorychecklist ul, #linkcategorydiv ul.categorychecklist ul{ margin-left: 0; margin-right: 18px; } /* positioning etc. */ p.search-box { float: left; } #posts-filter fieldset { float: right; margin: 0 0 1em 1.5ex; } #posts-filter fieldset legend { padding: 0 1px .2em 0; } .view-switch { float: left; } .filter { float: right; margin: -5px 10px 0 0; } #the-comment-list td.comment p.comment-author { margin-right: 0; } #the-comment-list p.comment-author img { float: right; margin-right: 0; margin-left: 8px; } .tablenav .delete { margin-right: 0; margin-left: 20px; } td.action-links, th.action-links { text-align: left; } /* 2000 - 2300 =================================== */ .filter .subsubsub { margin-left: 0; margin-right: -10px; } #wp-word-count { margin-right: 10px; } .tool-box .title { font-family: Tahoma, Arial, sans-serif; } .settings-toggle { text-align: left; margin: 5px 0 15px 7px; } .curtime #timestamp { background-position: right top; padding-left: 0; padding-right: 18px; } /* media popup 0819 */ #sidemenu { margin: -30px 315px 0 15px; float: left; padding-left: 0; padding-right: 10px; } #sidemenu a { float: right; } #replysubmit .button { margin-right: 0; margin-left: 5px; } /* 2300 - 2500 =================================== */ #edithead .inside { float: right; margin: 3px 5px 2px 0; } #replyrow #ed_reply_toolbar input { margin: 1px 1px 1px 2px; } /* show/hide settings */ #screen-meta-links { margin: 0 0 0 18px; } #screen-options-link-wrap, #contextual-help-link-wrap { float: left; font-family: Tahoma, Arial, sans-serif; margin: 0 0 0 6px; } #contextual-help-wrap li { margin-left: 0; margin-right: 18px; } #screen-meta a.show-settings { padding: 0 6px 0 16px; background-position: left top; } .metabox-prefs label { padding-right: 0; padding-left: 15px; } .metabox-prefs label input { margin: 0 2px 0 5px; } .inline-editor .save, .inline-editor .cancel { margin-right: 0; margin-left: 5px; } #replysubmit img.waiting, .inline-edit-save img.waiting { float: left; } .trash-undo-inside, .spam-undo-inside, .spam-undo-inside .avatar, .trash-undo-inside .avatar { margin-right: 0; margin-left: 8px; } /* 2500 - 2700 =================================== */ #bulk-titles div a { float: right; margin: 3px -2px 0 3px; } #wpbody-content .filename { margin-left: 0; margin-right: 10px; } #wpbody-content .inline-edit-row fieldset { float: right; } #wpbody-content .quick-edit-row-page fieldset.inline-edit-col-right .inline-edit-col { border-left: 0 none; border-right: 1px solid; } #wpbody-content .bulk-edit-row .inline-edit-col-bottom { float: left; } .inline-edit-row fieldset label span.title { float: right; } .inline-edit-row fieldset label span.input-text-wrap { margin-left: 0; margin-right: 5em; } .quick-edit-row-post fieldset.inline-edit-col-right label span.title { padding-right: 0; padding-left: 0.5em; } #wpbody-content .quick-edit-row fieldset .inline-edit-group label.alignleft:first-child { margin-right: 0; margin-left: 0.5em; } /* 2700 - 3000 =================================== */ .inline-edit-row fieldset span.title, .inline-edit-row fieldset span.checkbox-title { font-family: Tahoma, Arial, sans-serif; } .inline-edit-row fieldset .inline-edit-date { float: right; } .inline-edit-row fieldset ul.cat-checklist label, .inline-edit-row .catshow, .inline-edit-row .cathide, .inline-edit-row #bulk-titles div { font-family: Tahoma, Arial, sans-serif; } .quick-edit-row-post fieldset label.inline-edit-status { float: right; } .describe-toggle-on, .describe-toggle-off { float: left; margin-right: 0; margin-left: 20px; } #wpbody-content #media-items .filename { float: right; margin-left: 0; margin-right: 10px; } .media-item .pinkynail { float: right; } #find-posts-response .found-radio { padding: 8px 8px 0 0; } .find-box-buttons { left: auto; right: 12px; } .find-box-search label { padding-right: 0; padding-left: 6px; } /* favorite-actions */ #favorite-actions { float: left; } #favorite-first { padding: 3px 12px 4px 30px; } #favorite-inside { } #favorite-inside a { padding: 3px 10px 3px 5px; } #favorite-toggle { right: auto; left: 0; background:transparent url(../images/fav-arrow-rtl.gif?ver=20100531) no-repeat 10px -4px; } #utc-time, #local-time { padding-left: 0; padding-right: 25px; font-family: Tahoma, Arial; } .icon32 { float: right; margin: 14px 0 0 6px; } .subtitle { padding-left: 0; padding-right: 25px; } ol { list-style-type:decimal; margin-left:0; margin-right:2em; } .postbox-container { float: right; padding-left: 0.5%; padding-right: 0; } /* Media library */ #wpbody-content .describe th { text-align: right; } .describe .media-item-info .A1B1 { padding: 0 10px 0 0; } .media-upload-form td label { margin-left: 6px; margin-right: 2px; } .media-upload-form .align .field label { padding: 0 22px 0 0; margin: 0 0 0 1em; } .media-upload-form tr.image-size label { margin: 0 3px 0 0 ; } #wpbody-content .describe p.help { padding: 0 5px 0 0 ; } .media-item .error-div a.dismiss, .describe-toggle-on, .describe-toggle-off { float: left; margin-right: 0; margin-left: 20px; } .describe-toggle-on, .describe-toggle-off { float: left; margin-left: 20px; margin-right: 0; } .media-item .error-div { padding-left: 0; padding-right: 10px; } .media-item .pinkynail { float: right; } .crunching { text-align: left; margin-left: 5px; margin-right: 0; } .bar { border-left-width: 3px; border-left-style: solid; border-right: none; } /* TinyMCE =================================== */ .clearlooks2 .mceTop .mceLeft { width:100% !important; } /* tag hints */ .taghint { margin: 15px 12px -24px 0; } #poststuff .tagsdiv .howto { margin: 0 8px 6px 0; } #broken-themes { text-align: right; } .describe .del-link { padding-right: 5px; padding-left: 0; } .comment-ays th { border-left-style: solid; border-left-width: 1px; } /* Custom Header */ .appearance_page_custom-header #available-headers .default-header { float: right; margin: 0 0 20px 20px; } .appearance_page_custom-header #available-headers label input { margin-right: 0; margin-left: 10px; } #custom-background label { padding-right: 0; padding-left: 15px; } /* ltr =================================== */ #author-email, #author-url, #rss-url-1, #edit-slug-box, #post_name, #trackback_url, #metakeyinput, #post_password, #slug, #category_nicename, #link_url, #link_image, #rss_uri, #menu_order, #email, #newcomment_author_url, #pages-exclude, #template textarea, #user_login, #url, #pass1, #pass2, #aim, #yim, #jabber, #siteurl, #home, #admin_email, #gmt_offset, #default_post_edit_rows, #mailserver_url, #mailserver_login, #mailserver_pass, #mailserver_port, #ping_sites, #posts_per_page, #posts_per_rss, #blog_charset, #close_comments_days_old, #comments_per_page, #comment_max_links, #moderation_keys, #blacklist_keys, #thumbnail_size_w, #thumbnail_size_h, #medium_size_w, #medium_size_h, #large_size_w, #large_size_h, #permalink_structure, #category_base, #tag_base, #upload_path, #upload_url_path, #rules { direction: ltr; } /* no italic =================================== */ #quicktags #ed_em, #ed_reply_toolbar #ed_reply_em, .tablenav .displaying-num, #footer, #footer a, p.help, p.description, span.description, .form-wrap p, #side-sortables .comments-box thead th, #normal-sortables .comments-box thead th, .howto, .inline-edit-row fieldset span.title, .inline-edit-row fieldset span.checkbox-title, #utc-time, #local-time, form.upgrade .hint, p.install-help, .imgedit-help { font-style: normal; } wp-admin/css/wp-admin.css0000644002347300047320000016264111656660312015156 0ustar vonfabpsaclnp,ul,ol,blockquote,input,select{font-size:12px;}ol{list-style-type:decimal;margin-left:2em;}.code,code{font-family:Consolas,Monaco,Courier,monospace;}kbd,code{padding:1px 3px;margin:0 1px;font-size:11px;}.quicktags,.search{font:12px Georgia,"Times New Roman","Bitstream Charter",Times,serif;}.icon32{float:left;height:36px;margin:14px 6px 0 0;width:36px;}.key-labels label{line-height:24px;}.subtitle{font-size:.75em;line-height:1;padding-left:25px;}.pre{white-space:pre-wrap;white-space:-moz-pre-wrap!important;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word;}.howto{font-style:italic;display:block;font-family:"Lucida Grande",Verdana,Arial,"Bitstream Vera Sans",sans-serif;}p.install-help{margin:8px 0;font-style:italic;}textarea,input[type="text"],input[type="password"],input[type="file"],input[type="button"],input[type="submit"],input[type="reset"],select{border-width:1px;border-style:solid;-moz-border-radius:4px;-khtml-border-radius:4px;-webkit-border-radius:4px;border-radius:4px;}select option{padding:2px;}.submit{padding:1.5em 0;margin:5px 0;-moz-border-radius:0 0 3px 3px;-webkit-border-bottom-left-radius:3px;-webkit-border-bottom-right-radius:3px;-khtml-border-bottom-left-radius:3px;-khtml-border-bottom-right-radius:3px;border-bottom-left-radius:3px;border-bottom-right-radius:3px;}form p.submit a.cancel:hover{text-decoration:none;}.submit input,.button,input.button,.button-primary,input.button-primary,.button-secondary,input.button-secondary,.button-highlighted,input.button-highlighted,#postcustomstuff .submit input{text-decoration:none;font-size:11px!important;line-height:13px;padding:3px 8px;cursor:pointer;border-width:1px;border-style:solid;-moz-border-radius:11px;-khtml-border-radius:11px;-webkit-border-radius:11px;border-radius:11px;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;-khtml-box-sizing:content-box;box-sizing:content-box;}#minor-publishing-actions input,#major-publishing-actions input,#minor-publishing-actions .preview{min-width:80px;text-align:center;}textarea.all-options,input.all-options{width:250px;}input.large-text,textarea.large-text{width:99%;}input.regular-text,#adduser .form-field input{width:25em;}input.small-text{width:50px;}#doaction,#doaction2,#post-query-submit{margin-right:8px;}.tablenav select[name="action"],.tablenav select[name="action2"]{width:130px;}.tablenav select[name="m"]{width:155px;}.tablenav select#cat{width:170px;}#wpcontent select{padding:2px;height:2em;font-size:11px;}#wpcontent option{padding:2px;}#timezone_string option{margin-left:1em;}label,#your-profile label+a{vertical-align:middle;}#misc-publishing-actions label{vertical-align:baseline;}#pass-strength-result{border-style:solid;border-width:1px;float:left;margin:12px 5px 5px 1px;padding:3px 5px;text-align:center;width:200px;display:none;}.indicator-hint{padding-top:8px;}p.search-box{float:right;margin:-5px 0 0;}#major-publishing-actions{padding:6px;clear:both;border-top:none;}#delete-action{line-height:25px;vertical-align:middle;text-align:left;float:left;}#publishing-action{text-align:right;float:right;line-height:23px;}#post-body #minor-publishing{padding-bottom:10px;}#post-body #misc-publishing-actions{padding:0;}#post-body .misc-pub-section{border-right-width:1px;border-right-style:solid;border-bottom:0 none;min-height:30px;float:left;max-width:32%;}#post-body .misc-pub-section-last{border-right:0;}#misc-publishing-actions{padding:6px 0 16px 0;}.misc-pub-section{padding:6px;border-bottom-width:1px;border-bottom-style:solid;}.misc-pub-section-last{border-bottom:0 none;}#minor-publishing-actions{padding:6px;text-align:right;}#minor-publishing{border-bottom-width:1px;border-bottom-style:solid;}#save-post{float:left;}#minor-publishing .ajax-loading{padding:3px 0 0 4px;float:left;}.preview{float:right;}#sticky-span{margin-left:18px;}#post-status-display,#post-visibility-display{font-weight:bold;}.side-info{margin:0;padding:4px;font-size:11px;}.side-info h5{padding-bottom:7px;font-size:14px;margin:12px 2px 5px;border-bottom-width:1px;border-bottom-style:solid;}.side-info ul{margin:0;padding-left:18px;list-style:square;}a.button,a.button-primary,a.button-secondary{line-height:15px;padding:3px 10px;white-space:nowrap;-webkit-border-radius:10px;}.approve{display:none;}.unapproved .approve,.spam .approve,.trash .approve{display:inline;}.unapproved .unapprove{display:none;}.add-new-h2{font-style:normal;margin:0 6px;position:relative;top:-3px;}td.action-links,th.action-links{text-align:right;}.describe .del-link{padding-left:5px;}#update-nag,.update-nag{line-height:19px;padding:5px 0;font-size:12px;text-align:center;margin:0 15px;border-width:1px;border-style:solid;border-top-width:0;border-top-style:none;-moz-border-radius:0 0 6px 6px;-webkit-border-bottom-right-radius:6px;-webkit-border-bottom-left-radius:6px;-khtml-border-bottom-right-radius:6px;-khtml-border-bottom-left-radius:6px;border-bottom-right-radius:6px;border-bottom-left-radius:6px;}.plugins .plugin-update{padding:0;}.plugin-update .update-message{margin:0 10px 8px 31px;font-weight:bold;}ul#dismissed-updates{display:none;}form.upgrade{margin-top:8px;}form.upgrade .hint{font-style:italic;font-size:85%;margin:-0.5em 0 2em 0;}.ajax-feedback{visibility:hidden;vertical-align:bottom;}#ajax-response.alignleft{margin-left:2em;}#editorcontainer #content{padding:6px;line-height:150%;border:0 none;outline:none;resize:vertical;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-khtml-box-sizing:border-box;box-sizing:border-box;}#editorcontainer,#quicktags{border-style:solid;border-width:1px;border-collapse:separate;-moz-border-radius:6px 6px 0 0;-webkit-border-top-right-radius:6px;-webkit-border-top-left-radius:6px;-khtml-border-top-right-radius:6px;-khtml-border-top-left-radius:6px;border-top-right-radius:6px;border-top-left-radius:6px;}#quicktags{padding:0;margin-bottom:-3px;border-bottom-width:3px;background-image:url("../images/ed-bg.gif");background-position:left top;background-repeat:repeat-x;}#quicktags #ed_toolbar{padding:2px 4px 0;}#ed_toolbar input,#ed_reply_toolbar input{margin:3px 1px 4px;line-height:18px;display:inline-block;min-width:26px;padding:2px 4px;font-size:12px;}#ed_reply_toolbar input{margin:1px 2px 1px 1px;}#quicktags #ed_link,#ed_reply_toolbar #ed_reply_link{text-decoration:underline;}#quicktags #ed_del,#ed_reply_toolbar #ed_reply_del{text-decoration:line-through;}#quicktags #ed_em,#ed_reply_toolbar #ed_reply_em{font-style:italic;}#wp_editbtns,#wp_gallerybtns{padding:2px;position:absolute;display:none;z-index:999998;}#wp_editimgbtn,#wp_delimgbtn,#wp_editgallery,#wp_delgallery{margin:2px;padding:2px;border-width:1px;border-style:solid;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;}#wphead-info{margin:0 0 0 15px;padding-right:15px;}#user_info{float:right;font-size:12px;line-height:46px;height:46px;}#user_info p{margin:0;padding:0;line-height:46px;}#wphead{height:46px;}#wphead a,#adminmenu a,#sidemenu a,#taglist a,#catlist a,#show-settings a{text-decoration:none;}#header-logo{float:left;margin:7px 0 0 15px;}#wphead h1{font:normal 22px Georgia,"Times New Roman","Bitstream Charter",Times,serif;padding:10px 8px 5px;margin:0;float:left;}#wphead h1.long-title{font:normal 18px Georgia,"Times New Roman","Bitstream Charter",Times,serif;padding:12px 10px 5px;}#wphead #privacy-on-link{font-size:50%;font-style:normal;line-height:17px;padding:0 6px;vertical-align:middle;}#wphead h1 a:hover{text-decoration:none;}#wphead h1 a:hover #site-title,#wphead h1 a#privacy-on-link:hover{text-decoration:underline;}#favorite-actions{float:right;margin:11px 12px 0;min-width:130px;position:relative;}#favorite-first{-moz-border-radius:12px;-khtml-border-radius:12px;-webkit-border-radius:12px;border-radius:12px;line-height:15px;padding:3px 30px 4px 12px;border-width:1px;border-style:solid;}#favorite-inside{margin:0;padding:2px 1px;border-width:1px;border-style:solid;position:absolute;z-index:11;display:none;-moz-border-radius:0 0 12px 12px;-webkit-border-bottom-right-radius:12px;-webkit-border-bottom-left-radius:12px;-khtml-border-bottom-right-radius:12px;-khtml-border-bottom-left-radius:12px;border-bottom-right-radius:12px;border-bottom-left-radius:12px;}#favorite-actions a{display:block;text-decoration:none;font-size:11px;}#favorite-inside a{padding:3px 5px 3px 10px;}#favorite-toggle{height:22px;position:absolute;right:0;top:1px;width:28px;}#favorite-actions .slide-down{-moz-border-radius:12px 12px 0 0;-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:0;-khtml-border-bottom-right-radius:0;-khtml-border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0;border-bottom:none;}#screen-meta{position:relative;clear:both;}#screen-meta-links{margin:0 18px 0 0;}#screen-meta .screen-reader-text{visibility:hidden;}#screen-options-link-wrap,#contextual-help-link-wrap{float:right;height:22px;padding:0;margin:0 6px 0 0;font-family:"Lucida Grande",Verdana,Arial,"Bitstream Vera Sans",sans-serif;background:#e3e3e3;-moz-border-radius-bottomleft:3px;-moz-border-radius-bottomright:3px;-webkit-border-bottom-left-radius:3px;-webkit-border-bottom-right-radius:3px;}#contextual-help-wrap li{list-style-type:disc;margin-left:18px;}.toggle-arrow{background-repeat:no-repeat;background-position:top left;background-color:transparent;height:22px;line-height:22px;display:block;}.toggle-arrow-active{background-position:bottom left;}#screen-meta a.show-settings{text-decoration:none;z-index:1;padding:0 16px 0 6px;height:22px;line-height:22px;font-size:10px;display:block;background-repeat:no-repeat;background-position:top right;background-color:transparent;text-shadow:rgba(255,255,255,0.7) 0 1px 0;}#screen-meta a.show-settings:hover{text-decoration:none;}#screen-options-wrap h5,#contextual-help-wrap h5{margin:8px 0;font-size:13px;}#screen-options-wrap,#contextual-help-wrap{border-style:none solid solid;border-top:0 none;border-width:0 1px 1px;margin:0 15px;padding:8px 12px 12px;-moz-border-radius:0 0 4px 4px;-webkit-border-radius:0 0 4px 4px;-khtml-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;}.metabox-prefs label{display:inline-block;padding-right:15px;white-space:nowrap;line-height:30px;}.metabox-prefs label input{margin:0 5px 0 2px;}.metabox-prefs label a{display:none;}#adminmenu *{-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;user-select:none;}#adminmenu .wp-submenu{display:none;list-style:none;padding:0;margin:0;position:relative;z-index:2;border-width:1px 0 0;border-style:solid none none;}#adminmenu .wp-submenu a{font:normal 11px/18px "Lucida Grande",Verdana,Arial,"Bitstream Vera Sans",sans-serif;}#adminmenu .wp-submenu li.current,#adminmenu .wp-submenu li.current a,#adminmenu .wp-submenu li.current a:hover{font-weight:bold;}#adminmenu a.menu-top,#adminmenu .wp-submenu-head{font:normal 13px/18px Georgia,"Times New Roman","Bitstream Charter",Times,serif;}#adminmenu div.wp-submenu-head{display:none;}.folded #adminmenu div.wp-submenu-head,.folded #adminmenu li.wp-has-submenu div.sub-open{display:block;}.folded #adminmenu a.menu-top,.folded #adminmenu .wp-submenu,.folded #adminmenu li.wp-menu-open .wp-submenu,.folded #adminmenu div.wp-menu-toggle{display:none;}#adminmenu li.wp-menu-open .wp-submenu,.no-js #adminmenu .open-if-no-js .wp-submenu{display:block;}#adminmenu div.wp-menu-image{float:left;width:28px;height:28px;}#adminmenu li{margin:0;padding:0;cursor:pointer;}#adminmenu a{display:block;line-height:18px;padding:1px 5px 3px;}#adminmenu li.menu-top{min-height:26px;}#adminmenu a.menu-top{line-height:18px;min-width:10em;padding:5px 5px;border-width:1px 1px 0;border-style:solid solid none;}#adminmenu .wp-submenu a{margin:0;padding-left:12px;border-width:0 1px 0 0;border-style:none solid none none;}#adminmenu .menu-top-last ul.wp-submenu{border-width:0 0 1px;border-style:none none solid;}#adminmenu .wp-submenu li{padding:0;margin:0;}.folded #adminmenu li.menu-top{width:28px;height:30px;overflow:hidden;border-width:1px 1px 0;border-style:solid solid none;}#adminmenu .menu-top-first a.menu-top,.folded #adminmenu li.menu-top-first,#adminmenu .wp-submenu .wp-submenu-head{border-width:1px 1px 0;border-style:solid solid none;-moz-border-radius-topleft:6px;-moz-border-radius-topright:6px;-webkit-border-top-right-radius:6px;-webkit-border-top-left-radius:6px;-khtml-border-top-right-radius:6px;-khtml-border-top-left-radius:6px;border-top-right-radius:6px;border-top-left-radius:6px;}#adminmenu .menu-top-last a.menu-top,.folded #adminmenu li.menu-top-last{border-width:1px;border-style:solid;-moz-border-radius-bottomleft:6px;-moz-border-radius-bottomright:6px;-webkit-border-bottom-right-radius:6px;-webkit-border-bottom-left-radius:6px;-khtml-border-bottom-right-radius:6px;-khtml-border-bottom-left-radius:6px;border-bottom-right-radius:6px;border-bottom-left-radius:6px;}#adminmenu li.wp-menu-open a.menu-top-last{border-bottom:0 none;-moz-border-radius-bottomright:0;-moz-border-radius-bottomleft:0;-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:0;-khtml-border-bottom-right-radius:0;-khtml-border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0;}#adminmenu .wp-menu-image img{float:left;padding:8px 6px 0;opacity:.6;filter:alpha(opacity=60);}#adminmenu li.menu-top:hover .wp-menu-image img,#adminmenu li.wp-has-current-submenu .wp-menu-image img{opacity:1;filter:alpha(opacity=100);}#adminmenu li.wp-menu-separator{height:21px;padding:0;margin:0;}#adminmenu a.separator{cursor:w-resize;height:20px;padding:0;}.folded #adminmenu a.separator{cursor:e-resize;}#adminmenu .wp-menu-separator-last{height:10px;width:1px;}#adminmenu .wp-submenu .wp-submenu-head{border-width:1px;border-style:solid;padding:6px 4px 6px 10px;cursor:default;}.folded #adminmenu .wp-submenu{position:absolute;margin:-1px 0 0 28px;padding:0 8px 8px;z-index:999;border:0 none;}.folded #adminmenu .wp-submenu ul{width:140px;border-width:0 0 1px;border-style:none none solid;}.folded #adminmenu .wp-submenu li.wp-first-item{border-top:0 none;}.folded #adminmenu .wp-submenu a{padding-left:10px;}.folded #adminmenu a.wp-has-submenu{margin-left:40px;}#adminmenu li.menu-top-last .wp-submenu ul{border-width:0 0 1px;border-style:none none solid;}#adminmenu .wp-menu-toggle{width:22px;clear:right;float:right;margin:1px 0 0;height:27px;padding:1px 2px 0 0;cursor:default;}#adminmenu li.wp-has-current-submenu ul{border-bottom-width:1px;border-bottom-style:solid;}#adminmenu .wp-menu-image a{height:24px;}#adminmenu .wp-menu-image img{padding:6px 0 0 1px;}#adminmenu #awaiting-mod,#adminmenu span.update-plugins,#sidemenu li a span.update-plugins{position:absolute;font-family:Helvetica,Arial,sans-serif;font-size:9px;line-height:17px;font-weight:bold;margin-top:1px;margin-left:7px;-moz-border-radius:10px;-khtml-border-radius:10px;-webkit-border-radius:10px;border-radius:10px;}#adminmenu li #awaiting-mod span,#adminmenu li span.update-plugins span,#sidemenu li a span.update-plugins span{display:block;padding:0 6px;}#adminmenu li span.count-0,#sidemenu li a .count-0{display:none;}.post-com-count-wrapper{min-width:22px;font-family:Helvetica,Arial,sans-serif;}.post-com-count{height:1.3em;line-height:1.1em;display:block;text-decoration:none;padding:0 0 6px;cursor:pointer;background-position:center -80px;background-repeat:no-repeat;}.post-com-count span{font-size:9px;font-weight:bold;height:1.7em;line-height:1.70em;min-width:.7em;padding:0 6px;display:inline-block;cursor:pointer;-moz-border-radius:5px;-khtml-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;}strong .post-com-count{background-position:center -55px;}.post-com-count:hover{background-position:center -3px;}.column-response .post-com-count{float:left;margin-right:5px;text-align:center;}.response-links{float:left;}#the-comment-list .attachment-80x60{padding:4px 8px;}body.wp-admin{min-width:785px;}body.admin-bar #wphead{padding-top:28px;}.narrow{width:70%;margin-bottom:40px;}.narrow p{line-height:150%;}.widefat th,.widefat td{overflow:hidden;}.widefat td p{margin:2px 0 .8em;}.widefat .column-comment p{margin:.6em 0;}.widget .widget-top,.postbox h3{cursor:move;-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;user-select:none;}.postbox-container{float:left;padding-right:.5%;}.postbox-container .meta-box-sortables{min-height:300px;}.postbox .hndle span{padding:6px 0;}.postbox .hndle{cursor:move;}.hndle a{font-size:11px;font-weight:normal;}.postbox .handlediv{float:right;width:23px;height:26px;}.sortable-placeholder{border-width:1px;border-style:dashed;margin-bottom:20px;}.widget,.postbox,.stuffbox{margin-bottom:20px;border-width:1px;border-style:solid;line-height:1;-moz-border-radius:6px;-khtml-border-radius:6px;-webkit-border-radius:6px;border-radius:6px;}.widget .widget-top,.postbox h3,.postbox h3,.stuffbox h3{-moz-border-radius:6px 6px 0 0;-webkit-border-top-right-radius:6px;-webkit-border-top-left-radius:6px;-khtml-border-top-right-radius:6px;-khtml-border-top-left-radius:6px;border-top-right-radius:6px;border-top-left-radius:6px;}.postbox.closed h3{-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px;}.postbox table.form-table{margin-bottom:0;}.postbox input[type="text"],.postbox textarea,.stuffbox input[type="text"],.stuffbox textarea{border-width:1px;border-style:solid;}.temp-border{border:1px dotted #ccc;}.columns-prefs label{padding:0 5px;}#wpbody-content .metabox-holder{padding-top:10px;}#dashboard-widgets .meta-box-sortables{margin:0 5px;}#dashboard_recent_comments div.undo{border-top-style:solid;border-top-width:1px;margin:0 -10px;padding:3px 8px;font-size:11px;}#the-comment-list td.comment p.comment-author{margin-top:0;margin-left:0;}#the-comment-list p.comment-author img{float:left;margin-right:8px;}#the-comment-list p.comment-author strong a{border:none;}#the-comment-list td{vertical-align:top;}#the-comment-list td.comment{word-wrap:break-word;}#the-comment-list .check-column{padding-top:8px;}table.fixed{table-layout:fixed;}.fixed .column-rating,.fixed .column-visible{width:8%;}.fixed .column-date,.fixed .column-parent,.fixed .column-links{width:10%;}.fixed .column-response,.fixed .column-author,.fixed .column-categories,.fixed .column-tags,.fixed .column-rel,.fixed .column-role{width:15%;}.fixed .column-comments{width:4em;padding:8px 0;text-align:left;}.fixed .column-comments .vers{padding-left:3px;}.fixed .column-comments a{float:left;}.fixed .column-slug{width:25%;}.fixed .column-posts{width:10%;}.fixed .column-icon{width:80px;}#commentsdiv .fixed .column-author,#comments-form .fixed .column-author{width:20%;}#commentsdiv.postbox .inside{line-height:1.4em;margin:0;}#commentsdiv.postbox .inside .row-actions{line-height:18px;}#commentsdiv.postbox .inside td{padding:1em 10px;}#commentsdiv.postbox .inside .column-author{width:33%;}#commentsdiv.postbox .inside p{margin:6px 10px 8px;}#commentsdiv.postbox .column-comment p{margin:.6em 0;}#commentsdiv.postbox #replyrow td{padding:0;}.sorting-indicator{display:none;width:7px;height:4px;margin-top:5px;margin-left:7px;background-image:url(../images/sort.gif);background-repeat:no-repeat;}.fixed .column-comments .sorting-indicator{margin-top:3px;}.widefat th.sortable,.widefat th.sorted{padding:0;}th.sortable a,th.sorted a{display:block;overflow:hidden;padding:7px 7px 8px;}.fixed .column-comments.sortable a,.fixed .column-comments.sorted a{padding:8px 0;}th.sortable a span,th.sorted a span{float:left;cursor:pointer;}th.sorted.asc .sorting-indicator,th.desc:hover span.sorting-indicator{display:block;background-position:0 0;}th.sorted.desc .sorting-indicator,th.asc:hover span.sorting-indicator{display:block;background-position:-7px 0;}.tablenav-pages a{border-bottom-style:solid;border-bottom-width:2px;font-weight:bold;margin-right:1px;padding:0 2px;}.tablenav-pages .current-page{text-align:center;}.tablenav-pages .next-page{margin-left:2px;}.tablenav a.button-secondary{display:block;margin:3px 8px 0 0;}.tablenav{clear:both;height:30px;margin:6px 0 4px;vertical-align:middle;}.tablenav .tablenav-pages{float:right;display:block;cursor:default;height:30px;line-height:30px;font-size:11px;}.tablenav .one-page{display:none;}.tablenav .tablenav-pages a,.tablenav-pages span.current{text-decoration:none;border:none;padding:3px 6px;border-width:1px;border-style:solid;-moz-border-radius:5px;-khtml-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;}.tablenav .tablenav-pages a.disabled:hover{cursor:default;}.tablenav .tablenav-pages a.disabled:active{cursor:default;}.tablenav .displaying-num{margin-right:10px;font-size:12px;font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif;font-style:italic;}.tablenav .actions{padding:2px 8px 0 0;}.tablenav .delete{margin-right:20px;}.view-switch{float:right;margin:6px 8px 0;}.view-switch a{text-decoration:none;}.filter{float:left;margin:-5px 0 0 10px;}.filter .subsubsub{margin-left:-10px;margin-top:13px;}.screen-per-page{width:3em;}#posts-filter fieldset{float:left;margin:0 1.5ex 1em 0;padding:0;}#posts-filter fieldset legend{padding:0 0 .2em 1px;}span.post-state-format{font-weight:normal;}tr.inline-edit-row td{padding:0 .5em;}#wpbody-content .inline-edit-row fieldset{font-size:12px;float:left;margin:0;padding:0;width:100%;}#wpbody-content .inline-edit-row fieldset .inline-edit-col{padding:0 .5em;}#wpbody-content .quick-edit-row-page fieldset.inline-edit-col-right .inline-edit-col{border-width:0 0 0 1px;border-style:none none none solid;}#wpbody-content .quick-edit-row-post .inline-edit-col-left{width:40%;}#wpbody-content .quick-edit-row-post .inline-edit-col-right{width:39%;}#wpbody-content .inline-edit-row-post .inline-edit-col-center{width:20%;}#wpbody-content .quick-edit-row-page .inline-edit-col-left{width:50%;}#wpbody-content .quick-edit-row-page .inline-edit-col-right,#wpbody-content .bulk-edit-row-post .inline-edit-col-right{width:49%;}#wpbody-content .bulk-edit-row .inline-edit-col-left{width:30%;}#wpbody-content .bulk-edit-row-page .inline-edit-col-right{width:69%;}#wpbody-content .bulk-edit-row .inline-edit-col-bottom{float:right;width:69%;}#wpbody-content .inline-edit-row-page .inline-edit-col-right,#wpbody-content .bulk-edit-row-post .inline-edit-col-right{margin-top:27px;}.inline-edit-row fieldset .inline-edit-group{clear:both;}.inline-edit-row fieldset .inline-edit-group:after{content:".";display:block;height:0;clear:both;visibility:hidden;}.inline-edit-row p.submit{clear:both;padding:.5em;margin:.5em 0 0;}.inline-edit-row span.error{line-height:22px;margin:0 15px;padding:3px 5px;}.inline-edit-row h4{margin:.2em 0;padding:0;line-height:23px;}.inline-edit-row fieldset span.title,.inline-edit-row fieldset span.checkbox-title{margin:0;padding:0;line-height:27px;}.inline-edit-row fieldset label,.inline-edit-row fieldset span.inline-edit-categories-label{display:block;margin:.2em 0;}.inline-edit-row fieldset label.inline-edit-tags{margin-top:0;}.inline-edit-row fieldset label.inline-edit-tags span.title{margin:.2em 0;}.inline-edit-row fieldset label span.title{display:block;float:left;width:5em;}.inline-edit-row fieldset label span.input-text-wrap{display:block;margin-left:5em;}.quick-edit-row-post fieldset.inline-edit-col-right label span.title{width:auto;padding-right:.5em;}.inline-edit-row .input-text-wrap input[type=text]{width:100%;}.inline-edit-row fieldset label input[type=checkbox]{vertical-align:text-bottom;}.inline-edit-row fieldset label textarea{width:100%;height:4em;}#wpbody-content .bulk-edit-row fieldset .inline-edit-group label{max-width:50%;}#wpbody-content .quick-edit-row fieldset .inline-edit-group label.alignleft:first-child{margin-right:.5em;}.inline-edit-row h4{text-transform:uppercase;}.inline-edit-row fieldset span.title,.inline-edit-row fieldset span.checkbox-title{font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif;font-style:italic;line-height:1.8em;}.inline-edit-row fieldset input[type="text"],.inline-edit-row fieldset textarea{border-style:solid;border-width:1px;}.inline-edit-row fieldset .inline-edit-date{float:left;}.inline-edit-row fieldset input[name=jj],.inline-edit-row fieldset input[name=hh],.inline-edit-row fieldset input[name=mn]{font-size:12px;width:2.1em;}.inline-edit-row fieldset input[name=aa]{font-size:12px;width:3.5em;}.inline-edit-row fieldset label input.inline-edit-password-input{width:8em;}.inline-edit-row .catshow,.inline-edit-row .cathide{cursor:pointer;}ul.cat-checklist{height:12em;border-style:solid;border-width:1px;overflow-y:scroll;padding:0 5px;margin:0;}#bulk-titles{display:block;height:12em;border-style:solid;border-width:1px;overflow-y:scroll;padding:0 5px;margin:0 0 5px;}.inline-edit-row fieldset ul.cat-checklist li,.inline-edit-row fieldset ul.cat-checklist input{margin:0;}.inline-edit-row fieldset ul.cat-checklist label,.inline-edit-row .catshow,.inline-edit-row .cathide,.inline-edit-row #bulk-titles div{font-family:"Lucida Grande",Verdana,Arial,"Bitstream Vera Sans",sans-serif;font-style:normal;font-size:11px;}table .inline-edit-row fieldset ul.cat-hover{height:auto;max-height:30em;overflow-y:auto;position:absolute;}.inline-edit-row fieldset label input.inline-edit-menu-order-input{width:3em;}.inline-edit-row fieldset label input.inline-edit-slug-input{width:75%;}.quick-edit-row-post fieldset label.inline-edit-status{float:left;}#bulk-titles{line-height:140%;}#bulk-titles div{margin:.2em .3em;}#bulk-titles div a{cursor:pointer;display:block;float:left;height:10px;margin:3px 3px 0 -2px;overflow:hidden;position:relative;text-indent:-9999px;width:10px;}#titlediv{position:relative;margin-bottom:20px;}#titlediv label{cursor:text;}#titlediv div.inside{margin:0;}#poststuff #titlewrap{border:0;padding:0;}#titlediv #title{padding:3px 4px;border-width:1px;border-style:solid;-moz-border-radius:6px;-khtml-border-radius:6px;-webkit-border-radius:6px;border-radius:6px;font-size:1.7em;line-height:100%;width:100%;outline:none;}#titlediv #title-prompt-text{color:#bbb;position:absolute;font-size:1.7em;padding:8px;}#poststuff .inside-submitbox,#side-sortables .inside-submitbox{margin:0 3px;font-size:11px;}input#link_description,input#link_url{width:98%;}#pending{background:0 none;border:0 none;padding:0;font-size:11px;margin-top:-1px;}#edit-slug-box{height:1em;margin-top:8px;padding:0 7px;}#editable-post-name-full{display:none;}#editable-post-name input{width:16em;}.postarea h3 label{float:left;}.postarea #add-media-button{float:right;margin:7px 0 0;position:relative;right:10px;}#poststuff #editor-toolbar{height:30px;}.wp_themeSkin tr.mceFirst td.mceToolbar{border-width:0 0 1px;border-style:none none solid;}#edButtonPreview,#edButtonHTML{height:18px;margin:5px 5px 0 0;padding:4px 5px 2px;float:right;cursor:pointer;border-width:1px;border-style:solid;-moz-border-radius:3px 3px 0 0;-webkit-border-top-right-radius:3px;-webkit-border-top-left-radius:3px;-khtml-border-top-right-radius:3px;-khtml-border-top-left-radius:3px;border-top-right-radius:3px;border-top-left-radius:3px;}.js .theEditor{color:white;}#poststuff #edButtonHTML{margin-right:15px;}#media-buttons{cursor:default;padding:8px 8px 0;}#media-buttons a{cursor:pointer;padding:0 0 5px 10px;}#media-buttons img,#submitpost #ajax-loading,#submitpost .ajax-loading{vertical-align:middle;}#wpcontent .ajax-loading{visibility:hidden;}.submitbox .submit{text-align:left;padding:12px 10px 10px;font-size:11px;}.submitbox .submitdelete{border-bottom-width:1px;border-bottom-style:solid;text-decoration:none;padding:1px 2px;}.inside-submitbox #post_status{margin:2px 0 2px -2px;}.submitbox .submit a:hover{border-bottom-width:1px;border-bottom-style:solid;}.submitbox .submit input{margin-bottom:8px;margin-right:4px;padding:6px;}#post-status-select,#post-format{line-height:2.5em;margin-top:3px;}#post-body #normal-sortables{min-height:50px;}#post-body #advanced-sortables{min-height:20px;}.postbox{position:relative;min-width:255px;width:99.5%;}#trackback_url{width:99%;}#normal-sortables .postbox .submit{background:transparent none;border:0 none;float:right;padding:0 12px;margin:0;}#side-sortables .category-add input{width:94%;}#side-sortables .category-add select{width:100%;}#side-sortables .category-add input.category-add-sumbit,#post-body .category-add input.category-add input.category-add-sumbit{width:auto;}#post-body ul.category-tabs,#post-body ul.add-menu-item-tabs{float:left;width:120px;text-align:right;margin:0 -120px 0 5px;padding:0;}#post-body ul.category-tabs li,#post-body ul.add-menu-item-tabs li{padding:8px;}#post-body ul.category-tabs li.tabs,#post-body ul.add-menu-item-tabs li.tabs{-moz-border-radius:3px 0 0 3px;-webkit-border-top-left-radius:3px;-webkit-border-bottom-left-radius:3px;-khtml-border-top-left-radius:3px;-khtml-border-bottom-left-radius:3px;border-top-left-radius:3px;border-bottom-left-radius:3px;}#post-body ul.category-tabs li.tabs a,#post-body ul.add-menu-item-tabs li.tabs a{font-weight:bold;text-decoration:none;}.wp-tab-panel,.categorydiv div.tabs-panel,.customlinkdiv div.tabs-panel,.posttypediv div.tabs-panel,.taxonomydiv div.tabs-panel,#linkcategorydiv div.tabs-panel{height:200px;overflow:auto;padding:.5em .9em;border-style:solid;border-width:1px;}.nav-menus-php .customlinkdiv div.tabs-panel,.nav-menus-php .posttypediv div.tabs-panel,.nav-menus-php .taxonomydiv div.tabs-panel{height:auto;max-height:205px;}div.tabs-panel-active{display:block;}div.tabs-panel-inactive{display:none;}#post-body .categorydiv div.tabs-panel,.taxonomy div.tabs-panel,#post-body #linkcategorydiv div.tabs-panel{margin:0 5px 0 125px;}#side-sortables .category-tabs li,#side-sortables .add-menu-item-tabs li,.wp-tab-bar li{display:inline;}#side-sortables .category-tabs a,#side-sortables .add-menu-item-tabs a,.wp-tab-bar a{text-decoration:none;}#side-sortables .category-tabs,#side-sortables .add-menu-item-tabs,.wp-tab-bar{margin-bottom:3px;}.categorydiv ul,.customlinkdiv ul,.posttypediv ul,.taxonomydiv ul,#linkcategorydiv ul{list-style:none;padding:0;margin:0;}#normal-sortables .postbox #replyrow .submit{float:none;margin:0;padding:3px 7px;}#side-sortables .submitbox .submit input,#side-sortables .submitbox .submit .preview,#side-sortables .submitbox .submit a.preview:hover{border:0 none;}#side-sortables .inside-submitbox .insidebox,.stuffbox .insidebox{margin:11px 0;}#side-sortables .comments-box,#normal-sortables .comments-box{border:0 none;}ul.category-tabs,ul.add-menu-item-tabs,ul.wp-tab-bar{margin-top:12px;}#side-sortables .comments-box thead th,#normal-sortables .comments-box thead th{background:transparent;padding:0 7px 4px;font-style:italic;}ul.category-tabs li.tabs,ul.add-menu-item-tabs li.tabs,.wp-tab-active{border-style:solid solid none;border-width:1px 1px 0;}#commentsdiv img.waiting{padding-left:5px;}#post-body .category-tabs li.tabs,#post-body .add-menu-item-tabs li.tabs{border-style:solid none solid solid;border-width:1px 0 1px 1px;margin-right:-1px;}ul.category-tabs li,ul.add-menu-item-tabs li,ul.wp-tab-bar li{padding:5px;-moz-border-radius:3px 3px 0 0;-webkit-border-top-left-radius:3px;-webkit-border-top-right-radius:3px;-khtml-border-top-left-radius:3px;-khtml-border-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px;}form#tags-filter{position:relative;}p.search-box{float:right;margin:-5px 0 0;}.screen-per-page{width:3em;}#posts-filter fieldset{float:left;margin:0 1.5ex 1em 0;padding:0;}#posts-filter fieldset legend{padding:0 0 .2em 1px;}td.post-title strong,td.plugin-title strong{display:block;margin-bottom:.2em;}td.post-title p,td.plugin-title p{margin:6px 0;}.wp-hidden-children .wp-hidden-child,.ui-tabs-hide{display:none;}.commentlist .avatar{vertical-align:text-top;}#post-body .tagsdiv #newtag{margin-right:5px;width:16em;}#side-sortables input#post_password{width:94%;}#side-sortables .tagsdiv #newtag{width:68%;}#post-status-info{border-width:0 1px 1px;border-style:none solid solid;width:100%;-moz-border-radius:0 0 6px 6px;-webkit-border-bottom-left-radius:6px;-webkit-border-bottom-right-radius:6px;-khtml-border-bottom-left-radius:6px;-khtml-border-bottom-right-radius:6px;border-bottom-left-radius:6px;border-bottom-right-radius:6px;}#post-status-info td{font-size:11px;}.autosave-info{padding:2px 15px 2px 2px;text-align:right;}#editorcontent #post-status-info{border:none;}#post-body .wp_themeSkin .mceStatusbar a.mceResize{display:block;background:transparent url(../images/resize.gif) no-repeat scroll right bottom;width:12px;cursor:se-resize;margin:0 2px;position:relative;top:22px;}#wp-word-count{display:block;padding:2px 7px;}#timestampdiv select{height:20px;line-height:14px;padding:0;vertical-align:top;}#jj,#hh,#mn{width:2em;padding:1px;font-size:12px;}#aa{width:3.4em;padding:1px;font-size:12px;}.curtime #timestamp{background-repeat:no-repeat;background-position:left top;padding-left:18px;}#timestampdiv{padding-top:5px;line-height:23px;}#timestampdiv p{margin:8px 0 6px;}#timestampdiv input{border-width:1px;border-style:solid;}#postcustomstuff table,#postcustomstuff input,#postcustomstuff textarea{border-width:1px;border-style:solid;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;}#postcustomstuff .updatemeta,#postcustomstuff .deletemeta{margin:auto;}#postcustomstuff thead th{padding:5px 8px 8px;}#postcustom #postcustomstuff .submit{border:0 none;float:none;padding:5px 8px;}#side-sortables #postcustom #postcustomstuff .submit{padding:0 5px;}#side-sortables #postcustom #postcustomstuff td.left input{margin:3px 3px 0;}#side-sortables #postcustom #postcustomstuff #the-list textarea{height:85px;margin:3px;}#postcustomstuff table{margin:0;width:100%;border-width:1px;border-style:solid;border-spacing:0;}#postcustomstuff table input,#postcustomstuff table select,#postcustomstuff table textarea{width:95%;margin:8px 0 8px 8px;}#postcustomstuff th.left,#postcustomstuff td.left{width:38%;}#postcustomstuff .submit input{width:auto;}#postcustomstuff #newmeta .submit{padding:0 8px;}#postcustomstuff table #addmetasub{width:auto;}#postcustomstuff #newmetaleft{vertical-align:top;}#postcustomstuff #newmetaleft a{padding:0 10px;text-decoration:none;}table.diff{width:100%;}table.diff col.content{width:50%;}table.diff tr{background-color:transparent;}table.diff td,table.diff th{padding:.5em;font-family:Consolas,Monaco,Courier,monospace;border:none;}table.diff .diff-deletedline del,table.diff .diff-addedline ins{text-decoration:none;}.category-adder{margin-left:120px;padding:4px 0;}.category-adder h4{margin:0 0 8px;}#side-sortables .category-adder{margin:0;}#post-body .category-add input,.category-add select{width:30%;}#side-sortables .category-add select{width:100%;}#side-sortables .category-add input.category-add-sumbit,#post-body .category-add input.category-add input.category-add-sumbit{width:auto;}#post-body ul.category-tabs,#post-body ul.add-menu-item-tabs{float:left;width:120px;text-align:right;margin:0 -120px 0 5px;padding:0;}#post-body ul.category-tabs li,#post-body ul.add-menu-item-tabs li{padding:8px;}#post-body ul.category-tabs li.tabs,#post-body ul.add-menu-item-tabs li.tabs{-moz-border-radius:3px 0 0 3px;-webkit-border-top-left-radius:3px;-webkit-border-bottom-left-radius:3px;-khtml-border-top-left-radius:3px;-khtml-border-bottom-left-radius:3px;border-top-left-radius:3px;border-bottom-left-radius:3px;}#post-body ul.category-tabs li.tabs a,#post-body ul.add-menu-item-tabs li.tabs a{font-weight:bold;text-decoration:none;}.categorydiv div.tabs-panel,.customlinkdiv div.tabs-panel,.posttypediv div.tabs-panel,.taxonomydiv div.tabs-panel,#linkcategorydiv div.tabs-panel{height:200px;overflow:auto;padding:.5em .9em;border-style:solid;border-width:1px;}.nav-menus-php .customlinkdiv div.tabs-panel,.nav-menus-php .posttypediv div.tabs-panel,.nav-menus-php .taxonomydiv div.tabs-panel{height:auto;max-height:205px;}div.tabs-panel-active{display:block;}div.tabs-panel-inactive{display:none;}#post-body .categorydiv div.tabs-panel,.taxonomy div.tabs-panel,#post-body #linkcategorydiv div.tabs-panel{margin:0 5px 0 125px;}#side-sortables .category-tabs li,#side-sortables .add-menu-item-tabs li{display:inline;}#side-sortables .category-tabs a,#side-sortables .add-menu-item-tabs a{text-decoration:none;}#side-sortables .category-tabs,#side-sortables .add-menu-item-tabs{margin-bottom:3px;}.categorydiv ul,.customlinkdiv ul,.posttypediv ul,.taxonomydiv ul,#linkcategorydiv ul{list-style:none;padding:0;margin:0;}#front-page-warning,#front-static-pages ul,ul.export-filters,.inline-editor ul.cat-checklist ul,.categorydiv ul.categorychecklist ul,.customlinkdiv ul.categorychecklist ul,.posttypediv ul.categorychecklist ul,.taxonomydiv ul.categorychecklist ul,#linkcategorydiv ul.categorychecklist ul{margin-left:18px;}ul.categorychecklist li{margin:0;padding:0;line-height:19px;word-wrap:break-word;}.categorydiv .tabs-panel,.customlinkdiv .tabs-panel,.posttypediv .tabs-panel,.taxonomydiv .tabs-panel{border-width:3px;border-style:solid;}ul.category-tabs,ul.add-menu-item-tabs{margin-top:12px;}ul.category-tabs li.tabs,ul.add-menu-item-tabs li.tabs{border-style:solid solid none;border-width:1px 1px 0;}#post-body .category-tabs li.tabs,#post-body .add-menu-item-tabs li.tabs{border-style:solid none solid solid;border-width:1px 0 1px 1px;margin-right:-1px;}ul.category-tabs li,ul.add-menu-item-tabs li{padding:5px;-moz-border-radius:3px 3px 0 0;-webkit-border-top-left-radius:3px;-webkit-border-top-right-radius:3px;-khtml-border-top-left-radius:3px;-khtml-border-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px;}.form-wrap{margin:10px 0;width:97%;}.form-wrap p,.form-wrap label{font-size:11px;}.form-wrap label{display:block;padding:2px;font-size:12px;}.form-field input,.form-field textarea{border-style:solid;border-width:1px;width:95%;}p.description,.form-wrap p{margin:2px 0 5px;}p.help,p.description,span.description,.form-wrap p{font-size:12px;font-style:italic;font-family:"Lucida Grande",Verdana,Arial,"Bitstream Vera Sans",sans-serif;}.form-wrap .form-field{margin:0 0 10px;padding:8px;}.col-wrap h3{margin:12px 0;font-size:1.1em;}.col-wrap p.submit{margin-top:-10px;}.taghint{color:#aaa;margin:15px 0 -24px 12px;}#poststuff .tagsdiv .howto{margin:0 0 6px 8px;}.ajaxtag .newtag{background:transparent;position:relative;}.tagsdiv .newtag{width:180px;}.tagsdiv .the-tags{display:block;height:60px;margin:0 auto;overflow:auto;width:260px;}#post-body-content .tagsdiv .the-tags{margin:0 5px;}p.popular-tags{-moz-border-radius:8px;-khtml-border-radius:8px;-webkit-border-radius:8px;border-radius:8px;border-width:1px;border-style:solid;line-height:2em;padding:8px 12px 12px;text-align:justify;}p.popular-tags a{padding:0 3px;}.tagcloud{width:97%;margin:0 0 40px;text-align:justify;}.tagcloud h3{margin:2px 0 12px;}.ac_results{padding:0;margin:0;list-style:none;position:absolute;z-index:10000;display:none;border-width:1px;border-style:solid;}.ac_results li{padding:2px 5px;white-space:nowrap;text-align:left;}.ac_over{cursor:pointer;}.ac_match{text-decoration:underline;}#wpbody-content #media-items .describe{border-collapse:collapse;width:100%;border-top-style:solid;border-top-width:1px;clear:both;cursor:default;padding:5px;}#wpbody-content .describe th{vertical-align:top;text-align:left;padding:10px;width:140px;}#wpbody-content .describe .media-item-info tr{background-color:transparent;}#wpbody-content .describe .media-item-info td{padding:4px 10px 0;}.describe .media-item-info .A1B1{padding:0 0 0 10px;}#wpbody-content .filename{padding:0 10px;}#wpbody-content .media-item .thumbnail{max-height:128px;max-width:128px;}#wpbody-content #async-upload-wrap a{display:none;}.media-upload-form td label{margin-right:6px;margin-left:2px;}.media-upload-form .align .field label{display:inline;padding:0 0 0 22px;margin:0 1em 0 0;font-weight:bold;}.media-upload-form tr.image-size label{margin:0 0 0 3px;font-weight:bold;}.media-upload-form th.label label{font-weight:bold;margin:.5em;font-size:13px;}.media-upload-form th.label label span{padding:0 5px;}abbr.required{border:medium none;text-decoration:none;}#wpbody-content .describe input[type="text"],#wpbody-content .describe textarea{width:460px;}#wpbody-content .describe p.help{margin:0;padding:0 0 0 5px;}.media-item .error-div a.dismiss,.describe-toggle-on,.describe-toggle-off{display:block;line-height:36px;float:right;margin-right:20px;}.describe-toggle-off{display:none;}#wpbody-content .media-item{border-bottom-style:solid;border-bottom-width:1px;min-height:36px;position:relative;width:100%;}#wpbody-content .media-single .media-item{border-bottom-style:none;border-bottom-width:0;}#wpbody-content #media-items{border-style:solid solid none;border-width:1px;width:670px;}#wpbody-content #media-items .filename{line-height:36px;overflow:hidden;}.media-item .error-div{padding-left:10px;}.media-item .pinkynail{float:left;margin:2px;max-width:40px;max-height:32px;}.media-item .startopen,.media-item .startclosed{display:none;}.media-item .original{position:relative;height:34px;width:503px;}.media-item .percent{font-weight:bold;}.crunching{display:block;line-height:32px;text-align:right;margin-right:5px;}.progress{position:relative;margin-bottom:-36px;height:36px;}.bar{width:0;height:100%;border-right-width:3px;border-right-style:solid;}.upload-php .fixed .column-parent{width:25%;}.find-box{width:500px;height:300px;overflow:hidden;padding:33px 5px 40px;position:absolute;z-index:1000;}.find-box-head{cursor:move;font-weight:bold;height:2em;line-height:2em;padding:1px 12px;position:absolute;top:5px;width:100%;}.find-box-inside{overflow:auto;width:100%;height:100%;}.find-box-search{padding:12px;border-width:1px;border-style:none none solid;}#find-posts-response{margin:8px 0;padding:0 1px;}#find-posts-response table{width:100%;}#find-posts-response .found-radio{padding:5px 0 0 8px;width:15px;}.find-box-buttons{width:480px;margin:8px;}.find-box-search label{padding-right:6px;}.find-box #resize-se{position:absolute;right:1px;bottom:1px;}#favorite-actions{float:right;margin:11px 12px 0;min-width:130px;position:relative;}#favorite-first{-moz-border-radius:12px;-khtml-border-radius:12px;-webkit-border-radius:12px;border-radius:12px;line-height:15px;padding:3px 30px 4px 12px;border-width:1px;border-style:solid;}#favorite-inside{margin:0;padding:2px 1px;border-width:1px;border-style:solid;position:absolute;z-index:11;display:none;-moz-border-radius:0 0 12px 12px;-webkit-border-bottom-right-radius:12px;-webkit-border-bottom-left-radius:12px;-khtml-border-bottom-right-radius:12px;-khtml-border-bottom-left-radius:12px;border-bottom-right-radius:12px;border-bottom-left-radius:12px;}#favorite-actions a{display:block;text-decoration:none;font-size:11px;}#favorite-inside a{padding:3px 5px 3px 10px;}#favorite-toggle{height:22px;position:absolute;right:0;top:1px;width:28px;}#favorite-actions .slide-down{-moz-border-radius:12px 12px 0 0;-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:0;-khtml-border-bottom-right-radius:0;-khtml-border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0;border-bottom:none;}ul#dismissed-updates{display:none;}form.upgrade{margin-top:8px;}form.upgrade .hint{font-style:italic;font-size:85%;margin:-0.5em 0 2em 0;}#poststuff .inside .the-tagcloud{margin:5px 0 10px;padding:8px;border-width:1px;border-style:solid;line-height:1.8em;word-spacing:3px;-moz-border-radius:6px;-khtml-border-radius:6px;-webkit-border-radius:6px;border-radius:6px;}br.clear{height:2px;line-height:2px;}.swfupload{margin:5px 10px;vertical-align:middle;}.describe .image-editor{vertical-align:top;}.imgedit-wrap{position:relative;}.imgedit-settings p{margin:8px 0;}.describe .imgedit-wrap table td{vertical-align:top;padding-top:0;}.imgedit-wrap p,.describe .imgedit-wrap table td{font-size:11px;line-height:18px;}.describe .imgedit-wrap table td.imgedit-settings{padding:0 5px;}td.imgedit-settings input{vertical-align:middle;}.imgedit-wait{position:absolute;top:0;background:#FFF url(../images/wpspin_light.gif) no-repeat scroll 22px 10px;opacity:.7;filter:alpha(opacity=70);width:100%;height:500px;display:none;}.media-disabled,.imgedit-settings .disabled{color:grey;}.imgedit-wait-spin{padding:0 4px 4px;vertical-align:bottom;visibility:hidden;}.imgedit-menu{margin:0 0 12px;min-width:300px;}.imgedit-menu div{float:left;width:32px;height:32px;-moz-border-radius:4px;-khtml-border-radius:4px;-webkit-border-radius:4px;border-radius:4px;border-width:1px;border-style:solid;}.imgedit-crop-wrap{position:relative;}.imgedit-crop{background:transparent url(../images/imgedit-icons.png) no-repeat scroll -9px -31px;margin:0 8px 0 0;}.imgedit-crop.disabled:hover{background-position:-9px -31px;}.imgedit-crop:hover{background-position:-9px -1px;}.imgedit-rleft{background:transparent url(../images/imgedit-icons.png) no-repeat scroll -46px -31px;margin:0 3px;}.imgedit-rleft.disabled:hover{background-position:-46px -31px;}.imgedit-rleft:hover{background-position:-46px -1px;}.imgedit-rright{background:transparent url(../images/imgedit-icons.png) no-repeat scroll -77px -31px;margin:0 8px 0 3px;}.imgedit-rright.disabled:hover{background-position:-77px -31px;}.imgedit-rright:hover{background-position:-77px -1px;}.imgedit-flipv{background:transparent url(../images/imgedit-icons.png) no-repeat scroll -115px -31px;margin:0 3px;}.imgedit-flipv.disabled:hover{background-position:-115px -31px;}.imgedit-flipv:hover{background-position:-115px -1px;}.imgedit-fliph{background:transparent url(../images/imgedit-icons.png) no-repeat scroll -147px -31px;margin:0 8px 0 3px;}.imgedit-fliph.disabled:hover{background-position:-147px -31px;}.imgedit-fliph:hover{background-position:-147px -1px;}.imgedit-undo{background:transparent url(../images/imgedit-icons.png) no-repeat scroll -184px -31px;margin:0 3px;}.imgedit-undo.disabled:hover{background-position:-184px -31px;}.imgedit-undo:hover{background-position:-184px -1px;}.imgedit-redo{background:transparent url(../images/imgedit-icons.png) no-repeat scroll -215px -31px;margin:0 8px 0 3px;}.imgedit-redo.disabled:hover{background-position:-215px -31px;}.imgedit-redo:hover{background-position:-215px -1px;}.imgedit-applyto img{margin:0 8px 0 0;}.imgedit-group-top{margin:5px 0;}.imgedit-applyto .imgedit-label{padding:2px 0 0;display:block;}.imgedit-help{display:none;font-style:italic;margin-bottom:8px;}.imgedit-help ul li{font-size:11px;}a.imgedit-help-toggle{text-decoration:none;}#wpbody-content .imgedit-response div{width:600px;margin:8px;}.form-table td.imgedit-response{padding:0;}.imgedit-submit{margin:8px 0;}.imgedit-submit-btn{margin-left:20px;}.imgedit-wrap .nowrap{white-space:nowrap;}span.imgedit-scale-warn{color:red;font-size:20px;font-style:normal;visibility:hidden;vertical-align:middle;}.imgedit-group{border-width:1px;border-style:solid;-moz-border-radius:8px;-khtml-border-radius:8px;-webkit-border-radius:8px;border-radius:8px;margin-bottom:8px;padding:2px 10px;}.form-table{border-collapse:collapse;margin-top:.5em;width:100%;margin-bottom:-8px;clear:both;}.form-table td{margin-bottom:9px;padding:8px 10px;line-height:20px;font-size:11px;}.form-table th,.form-wrap label{font-weight:normal;text-shadow:rgba(255,255,255,1) 0 1px 0;}.form-table th{vertical-align:top;text-align:left;padding:10px;width:200px;}.form-table th.th-full{width:auto;}.form-table div.color-option{display:block;clear:both;margin-top:12px;}.form-table input.tog{margin-top:2px;margin-right:2px;float:left;}.form-table td p{margin-top:4px;}.form-table table.color-palette{vertical-align:bottom;float:left;margin:-12px 3px 11px;}.form-table .color-palette td{border-width:1px 1px 0;border-style:solid solid none;height:10px;line-height:20px;width:10px;}.commentlist li{padding:1em 1em .2em;margin:0;border-bottom-width:1px;border-bottom-style:solid;}.commentlist li li{border-bottom:0;padding:0;}.commentlist p{padding:0;margin:0 0 .8em;}#replyrow{font-size:11px;}#replyrow input{border-width:1px;border-style:solid;}#replyrow td{padding:2px;}#replyrow #editorcontainer{border:0 none;}#replysubmit{margin:0;padding:3px 7px;text-align:center;}#replysubmit img.waiting,.inline-edit-save img.waiting{padding:4px 10px 0;vertical-align:top;float:right;}#replysubmit .button{margin-right:5px;}#replysubmit .error{color:red;line-height:21px;text-align:center;vertical-align:center;}#replyrow #editor-toolbar{display:none;}#replyhead{font-size:12px;font-weight:bold;padding:2px 10px 4px;}#edithead .inside{float:left;padding:3px 0 2px 5px;margin:0;text-align:center;font-size:11px;}#edithead .inside input{width:180px;font-size:11px;}#edithead label{padding:2px 0;}#replycontainer{padding:5px;border:0 none;height:120px;overflow:hidden;position:relative;}#replycontent{resize:none;margin:0;width:100%;height:100%;padding:0;line-height:150%;border:0 none;outline:none;font-size:12px;}#replyrow #ed_reply_toolbar{margin:0;padding:2px 3px;}.comment-ays{margin-bottom:0;border-style:solid;border-width:1px;}.comment-ays th{border-right-style:solid;border-right-width:1px;}.trash-undo-inside,.spam-undo-inside{margin:1px 8px 1px 0;line-height:16px;}.spam-undo-inside .avatar,.trash-undo-inside .avatar{height:20px;width:20px;margin-right:8px;vertical-align:middle;}.stuffbox .editcomment{clear:none;}#comment-status-radio p{margin:3px 0 5px;}#comment-status-radio input{margin:2px 3px 5px 0;vertical-align:middle;}#comment-status-radio label{padding:5px 0;}.commentlist .avatar{vertical-align:text-top;}.theme-install-php .tablenav{height:auto;}table#availablethemes{border-spacing:0;border-width:1px 0;border-style:solid none;margin:10px auto;width:100%;}table#availablethemes .no-items td{border-width:0;padding:5px;}td.available-theme{vertical-align:top;width:240px;margin:0;padding:20px;text-align:left;}table#availablethemes td{border-width:0 1px 1px;border-style:none solid solid;}table#availablethemes td.right,table#availablethemes td.left{border-right:0 none;border-left:0 none;}table#availablethemes td.bottom{border-bottom:0 none;}.available-theme a.screenshot{width:240px;height:180px;display:block;border-width:1px;border-style:solid;margin-bottom:10px;overflow:hidden;}.available-theme img{width:240px;}.available-theme h3{margin:15px 0 5px;}#current-theme{margin:1em 0 1.5em;}#current-theme a{border-bottom:none;}#current-theme h3{font-size:17px;font-weight:normal;margin:0;}#current-theme .theme-description{margin-top:5px;}#current-theme img{float:left;border-width:1px;border-style:solid;margin-right:1em;margin-bottom:1.5em;width:150px;}.theme-options span{text-transform:uppercase;font-size:13px;}.theme-options a{font-size:15px;}#TB_window #TB_title a.tb-theme-preview-link,#TB_window #TB_title a.tb-theme-preview-link:visited{font-weight:bold;text-decoration:none;}#TB_window #TB_title{background-color:#222;color:#cfcfcf;}#broken-themes{text-align:left;width:50%;border-spacing:3px;padding:3px;}.theme-install-php h4{margin:2.5em 0 8px;}.appearance_page_custom-header #headimg{border:1px solid #DFDFDF;min-height:100px;width:100%;}.appearance_page_custom-header #upload-form p label{font-size:11px;}.appearance_page_custom-header #available-headers .default-header{float:left;margin:0 20px 20px 0;}.appearance_page_custom-header #available-headers label input{margin-right:10px;}.appearance_page_custom-header #available-headers label img{vertical-align:middle;}div#custom-background-image{min-height:100px;border:1px solid #dfdfdf;}div#custom-background-image img{max-width:400px;max-height:300px;}#custom-background label{padding-right:15px;}.nav-tab{border-style:solid;border-color:#ccc #ccc #f9f9f9;border-width:1px 1px 0;color:#c1c1c1;text-shadow:rgba(255,255,255,1) 0 1px 0;font-size:12px;line-height:16px;display:inline-block;padding:4px 14px 6px;text-decoration:none;margin:0 6px -1px 0;-moz-border-radius:5px 5px 0 0;-webkit-border-top-left-radius:5px;-webkit-border-top-right-radius:5px;-khtml-border-top-left-radius:5px;-khtml-border-top-right-radius:5px;border-top-left-radius:5px;border-top-right-radius:5px;}.nav-tab-active{border-width:1px;color:#464646;}h2.nav-tab-wrapper,h3.nav-tab-wrapper{border-bottom:1px solid #ccc;padding-bottom:0;}h2 .nav-tab{padding:4px 20px 6px;font:italic normal normal 24px/35px Georgia,"Times New Roman","Bitstream Charter",Times,serif;}.plugins .name,#pass-strength-result.strong,#pass-strength-result.short,.button-highlighted,input.button-highlighted,#quicktags #ed_strong,#ed_reply_toolbar #ed_reply_strong{font-weight:bold;}.plugins p{margin:0 4px;padding:0;}.plugins .desc p{margin:0 0 8px;}.plugins td.desc{line-height:1.5em;}.plugins .desc ul,.plugins .desc ol{margin:0 0 0 2em;}.plugins .desc ul{list-style-type:disc;}.plugins .row-actions-visible{padding:0;}.plugins tbody th.check-column{padding:7px 0;}.plugins td,.plugins th{border-bottom:0 none;}.plugins .inactive td,.plugins .inactive th,.plugins .active td,.plugins .active th{border-top-style:solid;border-top-width:1px;padding:5px 7px 0;}#wpbody-content .plugins .plugin-title,#wpbody-content .plugins .theme-title{padding-right:12px;white-space:nowrap;}.plugins .second,.plugins .row-actions-visible{padding:0 0 5px;}.plugins-php .widefat tfoot th,.plugins-php .widefat tfoot td{border-top-style:solid;border-top-width:1px;}.plugin-update-tr .update-message{margin:5px;padding:3px 5px;border-width:1px;border-style:solid;-moz-border-radius:5px;-khtml-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;}.plugin-install-php h4{margin:2.5em 0 8px;}#profile-page .form-table textarea{width:500px;margin-bottom:6px;}#profile-page .form-table #rich_editing{margin-right:5px;}#your-profile legend{font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif;font-size:22px;}#your-profile #rich_editing{border:none;}#display_name{width:15em;}#createuser .form-field input{width:25em;}#utc-time,#local-time{padding-left:25px;font-style:italic;font-family:"Lucida Grande",Verdana,Arial,"Bitstream Vera Sans",sans-serif;}.defaultavatarpicker .avatar{margin:2px 0;vertical-align:middle;}#footer{margin-top:-46px;border-top:1px;border-style:solid;}#footer,#footer a{font-size:12px;font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif;font-style:italic;}#footer p{margin:0;padding:15px;line-height:15px;}#footer a{text-decoration:none;}#footer a:hover{text-decoration:underline;}#excerpt,.attachmentlinks{margin:0;height:4em;width:98%;}#template div{margin-right:190px;}p.pagenav{margin:0;display:inline;}.pagenav span{font-weight:bold;margin:0 6px;}.row-title{font-size:12px!important;font-weight:bold;}.column-author img,.column-username img{float:left;margin-right:10px;margin-top:3px;}.row-actions{visibility:hidden;padding:2px 0 0;}tr:hover .row-actions,div.comment-item:hover .row-actions{visibility:visible;}.row-actions-visible{padding:2px 0 0;}.form-table .pre{padding:8px;margin:0;}table.form-table td .updated{font-size:13px;}.tagchecklist{margin-left:14px;font-size:12px;overflow:auto;}.tagchecklist strong{margin-left:-8px;position:absolute;}.tagchecklist span{margin-right:25px;display:block;float:left;font-size:11px;line-height:1.8em;white-space:nowrap;cursor:default;}.tagchecklist span a{margin:6px 0 0 -9px;cursor:pointer;width:10px;height:10px;display:block;float:left;text-indent:-9999px;overflow:hidden;position:absolute;}#poststuff h2{margin-top:20px;font-size:1.5em;margin-bottom:15px;padding:0 0 3px;clear:left;}#poststuff h3,.metabox-holder h3{font-size:12px;font-weight:bold;padding:7px 9px;margin:0;line-height:1;}#poststuff .inside,#poststuff .inside p{font-size:11px;margin:6px 6px 8px;}#poststuff .inside .submitbox p{margin:1em 0;}#post-visibility-select,#post-formats-select{line-height:1.5em;margin-top:3px;}#poststuff #submitdiv .inside{margin:0;}#titlediv,#poststuff .postarea{margin-bottom:20px;}td.post-title strong,td.plugin-title strong{display:block;margin-bottom:.2em;}td.post-title p,td.plugin-title p{margin:6px 0;}.wp-hidden-children .wp-hidden-child,.ui-tabs-hide{display:none;}#templateside ul li a{text-decoration:none;}.tool-box{margin:15px 0 35px;}.tool-box .buttons{margin:15px 0;}.tool-box .title{margin:8px 0;font:18px/24px Georgia,"Times New Roman","Bitstream Charter",Times,serif;}.pressthis a{font-size:1.2em;}#sidemenu{margin:-30px 15px 0 315px;list-style:none;position:relative;float:right;padding-left:10px;font-size:12px;}#sidemenu a{padding:0 7px;display:block;float:left;line-height:28px;border-top-width:1px;border-top-style:solid;border-bottom-width:1px;border-bottom-style:solid;}#sidemenu li{display:inline;line-height:200%;list-style:none;text-align:center;white-space:nowrap;margin:0;padding:0;}#sidemenu a.current{font-weight:normal;padding-left:6px;padding-right:6px;-moz-border-radius:4px 4px 0 0;-webkit-border-top-left-radius:4px;-webkit-border-top-right-radius:4px;-khtml-border-top-left-radius:4px;-khtml-border-top-right-radius:4px;border-top-left-radius:4px;border-top-right-radius:4px;border-width:1px;border-style:solid;}#sidemenu li a .count-0{display:none;}#poststuff .inside .the-tagcloud{margin:5px 0 10px;padding:8px;border-width:1px;border-style:solid;line-height:1.8em;word-spacing:3px;-moz-border-radius:6px;-khtml-border-radius:6px;-webkit-border-radius:6px;border-radius:6px;}.plugin-install #description,.plugin-install-network #description{width:60%;}table .vers,table .column-visible,table .column-rating{text-align:left;}body.iframe{height:98%;}.anchors{margin:10px 20px 10px 20px;}div.nav{height:2em;padding:7px 10px;vertical-align:text-top;margin:5px 0;}.nav .button-secondary{padding:2px 4px;}* html #themeselect{padding:0 3px;height:22px;}.settings-toggle{text-align:right;margin:5px 7px 15px 0;font-size:12px;}.settings-toggle h3{margin:0;}form#tags-filter{position:relative;}td.media-icon{text-align:center;width:80px;padding-top:8px;padding-bottom:8px;}td.media-icon img{max-width:80px;max-height:60px;}.screen-per-page{width:3em;}* html #template div{margin-right:0;}.list-ajax-loading{float:right;margin-right:9px;margin-top:-1px;}.tablenav .list-ajax-loading{margin-top:7px;}#howto{font-size:11px;margin:0 5px;display:block;}.import-system{font-size:16px;}#namediv table{width:100%;}#namediv td.first{width:10px;white-space:nowrap;}#namediv input{width:98%;}#namediv p{margin:10px 0;}#submitdiv h3{margin-bottom:0!important;}.zerosize{height:0;width:0;margin:0;border:0;padding:0;overflow:hidden;position:absolute;}br.clear{height:2px;line-height:2px;}.checkbox{border:none;margin:0;padding:0;}#content{margin:0;width:100%;}fieldset{border:0;padding:0;margin:0;}#linksubmitdiv div.inside,div.inside{padding:0;margin:0;}.post-categories{display:inline;margin:0;padding:0;}.post-categories li{display:inline;}wp-admin/css/wp-admin.dev.css0000644002347300047320000022345611656660312015735 0ustar vonfabpsacln/*------------------------------------------------------------------------------ Hello, this is the main WordPress admin CSS file. All the important stuff is in here. TABLE OF CONTENTS: ------------------ 1.0 - Text Elements 2.0 - Forms 3.0 - Actions 4.0 - Notifications 5.0 - TinyMCE 6.0 - Admin Header 6.1 - Favorites Menu 6.2 - Screen Options Tabs 7.0 - Main Navigation 8.0 - Layout Blocks 9.0 - Dashboard 10.0 - List Posts 10.1 - Inline Editing 11.0 - Write/Edit Post Screen 11.1 - Custom Fields 11.2 - Post Revisions 12.0 - Categories 13.0 - Tags 14.0 - Media Screen 14.1 - Media Uploader 14.2 - Image Editor 15.0 - Comments Screen 16.0 - Themes 16.1 - Custom Header 16.2 - Custom Background 16.3 - Tabbed Admin Screen Interface 17.0 - Plugins 18.0 - Users 19.0 - Tools 20.0 - Settings 21.0 - Admin Footer 22.0 - Misc 23.0 - Dead ------------------------------------------------------------------------------*/ /*------------------------------------------------------------------------------ 1.0 - Text Styles ------------------------------------------------------------------------------*/ p, ul, ol, blockquote, input, select { font-size: 12px; } ol { list-style-type: decimal; margin-left: 2em; } .code, code { font-family: Consolas, Monaco, Courier, monospace; } kbd, code { padding: 1px 3px; margin: 0 1px; font-size: 11px; } .quicktags, .search { font: 12px Georgia, "Times New Roman", "Bitstream Charter", Times, serif; } .icon32 { float: left; height: 36px; margin: 14px 6px 0 0; width: 36px; } .key-labels label { line-height: 24px; } .subtitle { font-size: 0.75em; line-height: 1; padding-left: 25px; } .pre { /* http://www.longren.org/2006/09/27/wrapping-text-inside-pre-tags/ */ white-space: pre-wrap; /* css-3 */ white-space: -moz-pre-wrap !important; /* Mozilla, since 1999 */ white-space: -pre-wrap; /* Opera 4-6 */ white-space: -o-pre-wrap; /* Opera 7 */ word-wrap: break-word; /* Internet Explorer 5.5+ */ } .howto { font-style: italic; display: block; font-family: "Lucida Grande", Verdana, Arial, "Bitstream Vera Sans", sans-serif; } p.install-help { margin: 8px 0; font-style: italic; } /*------------------------------------------------------------------------------ 2.0 - Forms ------------------------------------------------------------------------------*/ textarea, input[type="text"], input[type="password"], input[type="file"], input[type="button"], input[type="submit"], input[type="reset"], select { border-width: 1px; border-style: solid; -moz-border-radius: 4px; -khtml-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; } select option { padding: 2px; } .submit { padding: 1.5em 0; margin: 5px 0; -moz-border-radius: 0 0 3px 3px; -webkit-border-bottom-left-radius: 3px; -webkit-border-bottom-right-radius: 3px; -khtml-border-bottom-left-radius: 3px; -khtml-border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; border-bottom-right-radius: 3px; } form p.submit a.cancel:hover { text-decoration: none; } .submit input, .button, input.button, .button-primary, input.button-primary, .button-secondary, input.button-secondary, .button-highlighted, input.button-highlighted, #postcustomstuff .submit input { text-decoration: none; font-size: 11px !important; line-height: 13px; padding: 3px 8px; cursor: pointer; border-width: 1px; border-style: solid; -moz-border-radius: 11px; -khtml-border-radius: 11px; -webkit-border-radius: 11px; border-radius: 11px; -moz-box-sizing: content-box; -webkit-box-sizing: content-box; -khtml-box-sizing: content-box; box-sizing: content-box; } #minor-publishing-actions input, #major-publishing-actions input, #minor-publishing-actions .preview { min-width: 80px; text-align: center; } textarea.all-options, input.all-options { width: 250px; } input.large-text, textarea.large-text { width: 99%; } input.regular-text, #adduser .form-field input { width: 25em; } input.small-text { width: 50px; } #doaction, #doaction2, #post-query-submit { margin-right: 8px; } .tablenav select[name="action"], .tablenav select[name="action2"] { width: 130px; } .tablenav select[name="m"] { width: 155px; } .tablenav select#cat { width: 170px; } #wpcontent select { padding: 2px; height: 2em; font-size: 11px; } #wpcontent option { padding: 2px; } #timezone_string option { margin-left: 1em; } label, #your-profile label + a { vertical-align: middle; } #misc-publishing-actions label { vertical-align: baseline; } #pass-strength-result { border-style: solid; border-width: 1px; float: left; margin: 12px 5px 5px 1px; padding: 3px 5px; text-align: center; width: 200px; display: none; } .indicator-hint { padding-top: 8px; } p.search-box { float: right; margin: -5px 0 0; } /*------------------------------------------------------------------------------ 3.0 - Actions ------------------------------------------------------------------------------*/ #major-publishing-actions { padding: 6px; clear: both; border-top: none; } #delete-action { line-height: 25px; vertical-align: middle; text-align: left; float: left; } #publishing-action { text-align: right; float: right; line-height: 23px; } #post-body #minor-publishing { padding-bottom: 10px; } #post-body #misc-publishing-actions { padding: 0; } #post-body .misc-pub-section { border-right-width: 1px; border-right-style: solid; border-bottom: 0 none; min-height: 30px; float: left; max-width: 32%; } #post-body .misc-pub-section-last { border-right: 0; } #misc-publishing-actions { padding: 6px 0 16px 0; } .misc-pub-section { padding: 6px; border-bottom-width: 1px; border-bottom-style: solid; } .misc-pub-section-last { border-bottom: 0 none; } #minor-publishing-actions { padding: 6px; text-align: right; } #minor-publishing { border-bottom-width: 1px; border-bottom-style: solid; } #save-post { float: left; } #minor-publishing .ajax-loading { padding: 3px 0 0 4px; float: left; } .preview { float: right; } #sticky-span { margin-left: 18px; } #post-status-display, #post-visibility-display { font-weight: bold; } .side-info { margin: 0; padding: 4px; font-size: 11px; } .side-info h5 { padding-bottom: 7px; font-size: 14px; margin: 12px 2px 5px; border-bottom-width: 1px; border-bottom-style: solid; } .side-info ul { margin: 0; padding-left: 18px; list-style: square; } a.button, a.button-primary, a.button-secondary { line-height: 15px; padding: 3px 10px; white-space: nowrap; -webkit-border-radius: 10px; } .approve { display: none; } .unapproved .approve, .spam .approve, .trash .approve { display: inline; } .unapproved .unapprove { display: none; } .add-new-h2 { font-style: normal; margin: 0 6px; position: relative; top: -3px; } td.action-links, th.action-links { text-align: right; } .describe .del-link { padding-left: 5px; } /*------------------------------------------------------------------------------ 4.0 - Notifications ------------------------------------------------------------------------------*/ #update-nag, .update-nag { line-height: 19px; padding: 5px 0; font-size: 12px; text-align: center; margin: 0 15px; border-width: 1px; border-style: solid; border-top-width: 0; border-top-style: none; -moz-border-radius: 0 0 6px 6px; -webkit-border-bottom-right-radius: 6px; -webkit-border-bottom-left-radius: 6px; -khtml-border-bottom-right-radius: 6px; -khtml-border-bottom-left-radius: 6px; border-bottom-right-radius: 6px; border-bottom-left-radius: 6px; } .plugins .plugin-update { padding: 0; } .plugin-update .update-message { margin: 0 10px 8px 31px; font-weight: bold; } ul#dismissed-updates { display: none; } form.upgrade { margin-top: 8px; } form.upgrade .hint { font-style: italic; font-size: 85%; margin: -0.5em 0 2em 0; } .ajax-feedback { visibility: hidden; vertical-align: bottom; } #ajax-response.alignleft { margin-left: 2em; } /*------------------------------------------------------------------------------ 5.0 - TinyMCE ------------------------------------------------------------------------------*/ #editorcontainer #content { padding: 6px; line-height: 150%; border: 0 none; outline: none; resize: vertical; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -khtml-box-sizing: border-box; box-sizing: border-box; } #editorcontainer, #quicktags { border-style: solid; border-width: 1px; border-collapse: separate; -moz-border-radius: 6px 6px 0 0; -webkit-border-top-right-radius: 6px; -webkit-border-top-left-radius: 6px; -khtml-border-top-right-radius: 6px; -khtml-border-top-left-radius: 6px; border-top-right-radius: 6px; border-top-left-radius: 6px; } #quicktags { padding: 0; margin-bottom: -3px; border-bottom-width: 3px; background-image: url("../images/ed-bg.gif"); background-position: left top; background-repeat: repeat-x; } #quicktags #ed_toolbar { padding: 2px 4px 0; } #ed_toolbar input, #ed_reply_toolbar input { margin: 3px 1px 4px; line-height: 18px; display: inline-block; min-width: 26px; padding: 2px 4px; font-size: 12px; } #ed_reply_toolbar input { margin: 1px 2px 1px 1px; } #quicktags #ed_link, #ed_reply_toolbar #ed_reply_link { text-decoration: underline; } #quicktags #ed_del, #ed_reply_toolbar #ed_reply_del { text-decoration: line-through; } #quicktags #ed_em, #ed_reply_toolbar #ed_reply_em { font-style: italic; } #wp_editbtns, #wp_gallerybtns { padding: 2px; position: absolute; display: none; z-index: 999998; } #wp_editimgbtn, #wp_delimgbtn, #wp_editgallery, #wp_delgallery { margin: 2px; padding: 2px; border-width: 1px; border-style: solid; -moz-border-radius: 3px; -khtml-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; } /*------------------------------------------------------------------------------ 6.0 - Admin Header ------------------------------------------------------------------------------*/ #wphead-info { margin: 0 0 0 15px; padding-right: 15px; } #user_info { float: right; font-size: 12px; line-height: 46px; height: 46px; } #user_info p { margin: 0; padding: 0; line-height: 46px; } #wphead { height: 46px; } #wphead a, #adminmenu a, #sidemenu a, #taglist a, #catlist a, #show-settings a { text-decoration: none; } #header-logo { float: left; margin: 7px 0 0 15px; } #wphead h1 { font: normal 22px Georgia, "Times New Roman", "Bitstream Charter", Times, serif; padding: 10px 8px 5px; margin: 0; float: left; } #wphead h1.long-title { font: normal 18px Georgia, "Times New Roman", "Bitstream Charter", Times, serif; padding: 12px 10px 5px; } #wphead #privacy-on-link { font-size: 50%; font-style: normal; line-height: 17px; padding: 0 6px; vertical-align: middle; } #wphead h1 a:hover { text-decoration:none; } #wphead h1 a:hover #site-title, #wphead h1 a#privacy-on-link:hover { text-decoration:underline; } /*------------------------------------------------------------------------------ 6.1 - Favorites Menu ------------------------------------------------------------------------------*/ #favorite-actions { float: right; margin: 11px 12px 0; min-width: 130px; position: relative; } #favorite-first { -moz-border-radius: 12px; -khtml-border-radius: 12px; -webkit-border-radius: 12px; border-radius: 12px; line-height: 15px; padding: 3px 30px 4px 12px; border-width: 1px; border-style: solid; } #favorite-inside { margin: 0 0 0 0px; padding: 2px 1px; border-width: 1px; border-style: solid; position: absolute; z-index: 11; display: none; -moz-border-radius: 0 0 12px 12px; -webkit-border-bottom-right-radius: 12px; -webkit-border-bottom-left-radius: 12px; -khtml-border-bottom-right-radius: 12px; -khtml-border-bottom-left-radius: 12px; border-bottom-right-radius: 12px; border-bottom-left-radius: 12px; } #favorite-actions a { display: block; text-decoration: none; font-size: 11px; } #favorite-inside a { padding: 3px 5px 3px 10px; } #favorite-toggle { height: 22px; position: absolute; right: 0; top: 1px; width: 28px; } #favorite-actions .slide-down { -moz-border-radius: 12px 12px 0 0; -webkit-border-bottom-right-radius: 0; -webkit-border-bottom-left-radius: 0; -khtml-border-bottom-right-radius: 0; -khtml-border-bottom-left-radius: 0; border-bottom-right-radius: 0; border-bottom-left-radius: 0; border-bottom: none; } /*------------------------------------------------------------------------------ 6.2 - Screen Options Tabs ------------------------------------------------------------------------------*/ #screen-meta { position: relative; clear: both; } #screen-meta-links { margin: 0 18px 0 0; } #screen-meta .screen-reader-text { visibility: hidden; } #screen-options-link-wrap, #contextual-help-link-wrap { float: right; height: 22px; padding: 0; margin: 0 6px 0 0; font-family: "Lucida Grande", Verdana, Arial, "Bitstream Vera Sans", sans-serif; background: #e3e3e3; -moz-border-radius-bottomleft: 3px; -moz-border-radius-bottomright: 3px; -webkit-border-bottom-left-radius: 3px; -webkit-border-bottom-right-radius: 3px; } #contextual-help-wrap li { list-style-type: disc; margin-left: 18px; } .toggle-arrow { background-repeat: no-repeat; background-position: top left; background-color: transparent; height: 22px; line-height: 22px; display: block; } .toggle-arrow-active { background-position: bottom left; } #screen-meta a.show-settings { text-decoration: none; z-index: 1; padding: 0 16px 0 6px; height: 22px; line-height: 22px; font-size: 10px; display: block; background-repeat: no-repeat; background-position: top right; background-color: transparent; text-shadow: rgba(255,255,255,0.7) 0 1px 0; } #screen-meta a.show-settings:hover { text-decoration: none; } #screen-options-wrap h5, #contextual-help-wrap h5 { margin: 8px 0; font-size: 13px; } #screen-options-wrap, #contextual-help-wrap { border-style: none solid solid; border-top: 0 none; border-width: 0 1px 1px; margin: 0 15px; padding: 8px 12px 12px; -moz-border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; -khtml-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px; } .metabox-prefs label { display: inline-block; padding-right: 15px; white-space: nowrap; line-height: 30px; } .metabox-prefs label input { margin: 0 5px 0 2px; } .metabox-prefs label a { display: none; } /*------------------------------------------------------------------------------ 7.0 - Main Navigation (Left Menu) ------------------------------------------------------------------------------*/ /* side admin menu */ #adminmenu * { -webkit-user-select: none; -moz-user-select: none; -khtml-user-select: none; user-select: none; } #adminmenu .wp-submenu { display: none; list-style: none; padding: 0; margin: 0; position: relative; z-index: 2; border-width: 1px 0 0; border-style: solid none none; } #adminmenu .wp-submenu a { font: normal 11px/18px "Lucida Grande", Verdana, Arial, "Bitstream Vera Sans", sans-serif; } #adminmenu .wp-submenu li.current, #adminmenu .wp-submenu li.current a, #adminmenu .wp-submenu li.current a:hover { font-weight: bold; } #adminmenu a.menu-top, #adminmenu .wp-submenu-head { font: normal 13px/18px Georgia, "Times New Roman", "Bitstream Charter", Times, serif; } #adminmenu div.wp-submenu-head { display: none; } .folded #adminmenu div.wp-submenu-head, .folded #adminmenu li.wp-has-submenu div.sub-open { display: block; } .folded #adminmenu a.menu-top, .folded #adminmenu .wp-submenu, .folded #adminmenu li.wp-menu-open .wp-submenu, .folded #adminmenu div.wp-menu-toggle { display: none; } #adminmenu li.wp-menu-open .wp-submenu, .no-js #adminmenu .open-if-no-js .wp-submenu { display: block; } #adminmenu div.wp-menu-image { float: left; width: 28px; height: 28px; } #adminmenu li { margin: 0; padding: 0; cursor: pointer; } #adminmenu a { display: block; line-height: 18px; padding: 1px 5px 3px; } #adminmenu li.menu-top { min-height: 26px; } #adminmenu a.menu-top { line-height: 18px; min-width: 10em; padding: 5px 5px; border-width: 1px 1px 0; border-style: solid solid none; } #adminmenu .wp-submenu a { margin: 0; padding-left: 12px; border-width: 0 1px 0 0; border-style: none solid none none; } #adminmenu .menu-top-last ul.wp-submenu { border-width: 0 0 1px; border-style: none none solid; } #adminmenu .wp-submenu li { padding: 0; margin: 0; } .folded #adminmenu li.menu-top { width: 28px; height: 30px; overflow: hidden; border-width: 1px 1px 0; border-style: solid solid none; } #adminmenu .menu-top-first a.menu-top, .folded #adminmenu li.menu-top-first, #adminmenu .wp-submenu .wp-submenu-head { border-width: 1px 1px 0; border-style: solid solid none; -moz-border-radius-topleft :6px; -moz-border-radius-topright: 6px; -webkit-border-top-right-radius: 6px; -webkit-border-top-left-radius: 6px; -khtml-border-top-right-radius: 6px; -khtml-border-top-left-radius: 6px; border-top-right-radius: 6px; border-top-left-radius: 6px; } #adminmenu .menu-top-last a.menu-top, .folded #adminmenu li.menu-top-last { border-width: 1px; border-style: solid; -moz-border-radius-bottomleft: 6px; -moz-border-radius-bottomright: 6px; -webkit-border-bottom-right-radius: 6px; -webkit-border-bottom-left-radius: 6px; -khtml-border-bottom-right-radius: 6px; -khtml-border-bottom-left-radius: 6px; border-bottom-right-radius: 6px; border-bottom-left-radius: 6px; } #adminmenu li.wp-menu-open a.menu-top-last { border-bottom: 0 none; -moz-border-radius-bottomright: 0; -moz-border-radius-bottomleft: 0; -webkit-border-bottom-right-radius: 0; -webkit-border-bottom-left-radius: 0; -khtml-border-bottom-right-radius: 0; -khtml-border-bottom-left-radius: 0; border-bottom-right-radius: 0; border-bottom-left-radius: 0; } #adminmenu .wp-menu-image img { float: left; padding: 8px 6px 0; opacity: 0.6; filter: alpha(opacity=60); } #adminmenu li.menu-top:hover .wp-menu-image img, #adminmenu li.wp-has-current-submenu .wp-menu-image img { opacity: 1; filter: alpha(opacity=100); } #adminmenu li.wp-menu-separator { height: 21px; padding: 0; margin: 0; } #adminmenu a.separator { cursor: w-resize; height: 20px; padding: 0; } .folded #adminmenu a.separator { cursor: e-resize; } #adminmenu .wp-menu-separator-last { height: 10px; width: 1px; } #adminmenu .wp-submenu .wp-submenu-head { border-width: 1px; border-style: solid; padding: 6px 4px 6px 10px; cursor: default; } .folded #adminmenu .wp-submenu { position: absolute; margin: -1px 0 0 28px; padding: 0 8px 8px; z-index: 999; border: 0 none; } .folded #adminmenu .wp-submenu ul { width: 140px; border-width: 0 0 1px; border-style: none none solid; } .folded #adminmenu .wp-submenu li.wp-first-item { border-top: 0 none; } .folded #adminmenu .wp-submenu a { padding-left: 10px; } .folded #adminmenu a.wp-has-submenu { margin-left: 40px; } #adminmenu li.menu-top-last .wp-submenu ul { border-width: 0 0 1px; border-style: none none solid; } #adminmenu .wp-menu-toggle { width: 22px; clear: right; float: right; margin: 1px 0 0; height: 27px; padding: 1px 2px 0 0; cursor: default; } #adminmenu li.wp-has-current-submenu ul { border-bottom-width: 1px; border-bottom-style: solid; } #adminmenu .wp-menu-image a { height: 24px; } #adminmenu .wp-menu-image img { padding: 6px 0 0 1px; } #adminmenu #awaiting-mod, #adminmenu span.update-plugins, #sidemenu li a span.update-plugins { position: absolute; font-family: Helvetica, Arial, sans-serif; font-size: 9px; line-height: 17px; font-weight: bold; margin-top: 1px; margin-left: 7px; -moz-border-radius: 10px; -khtml-border-radius: 10px; -webkit-border-radius: 10px; border-radius: 10px; } #adminmenu li #awaiting-mod span, #adminmenu li span.update-plugins span, #sidemenu li a span.update-plugins span { display: block; padding: 0 6px; } #adminmenu li span.count-0, #sidemenu li a .count-0 { display: none; } .post-com-count-wrapper { min-width: 22px; font-family: Helvetica, Arial, sans-serif; } .post-com-count { height: 1.3em; line-height: 1.1em; display: block; text-decoration: none; padding: 0 0 6px; cursor: pointer; background-position: center -80px; background-repeat: no-repeat; } .post-com-count span { font-size: 9px; font-weight: bold; height: 1.7em; line-height: 1.70em; min-width: 0.7em; padding: 0 6px; display: inline-block; cursor: pointer; -moz-border-radius: 5px; -khtml-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; } strong .post-com-count { background-position: center -55px; } .post-com-count:hover { background-position: center -3px; } .column-response .post-com-count { float: left; margin-right: 5px; text-align: center; } .response-links { float: left; } #the-comment-list .attachment-80x60 { padding: 4px 8px; } /*------------------------------------------------------------------------------ 8.0 - Layout Blocks ------------------------------------------------------------------------------*/ body.wp-admin { min-width: 785px; } body.admin-bar #wphead { padding-top: 28px; } .narrow { width: 70%; margin-bottom: 40px; } .narrow p { line-height: 150%; } .widefat th, .widefat td { overflow: hidden; } .widefat td p { margin: 2px 0 0.8em; } .widefat .column-comment p { margin: 0.6em 0; } .widget .widget-top, .postbox h3 { cursor: move; -webkit-user-select: none; -moz-user-select: none; -khtml-user-select: none; user-select: none; } .postbox-container { float: left; padding-right: 0.5%; } .postbox-container .meta-box-sortables { min-height: 300px; } .postbox .hndle span { padding: 6px 0; } .postbox .hndle { cursor: move; } .hndle a { font-size: 11px; font-weight: normal; } .postbox .handlediv { float: right; width: 23px; height: 26px; } .sortable-placeholder { border-width: 1px; border-style: dashed; margin-bottom: 20px; } .widget, .postbox, .stuffbox { margin-bottom: 20px; border-width: 1px; border-style: solid; line-height: 1; -moz-border-radius: 6px; -khtml-border-radius: 6px; -webkit-border-radius: 6px; border-radius: 6px; } .widget .widget-top, .postbox h3, .postbox h3, .stuffbox h3 { -moz-border-radius: 6px 6px 0 0; -webkit-border-top-right-radius: 6px; -webkit-border-top-left-radius: 6px; -khtml-border-top-right-radius: 6px; -khtml-border-top-left-radius: 6px; border-top-right-radius: 6px; border-top-left-radius: 6px; } .postbox.closed h3 { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -khtml-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; -khtml-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; } .postbox table.form-table { margin-bottom: 0; } .postbox input[type="text"], .postbox textarea, .stuffbox input[type="text"], .stuffbox textarea { border-width: 1px; border-style: solid; } .temp-border { border: 1px dotted #ccc; } .columns-prefs label { padding: 0 5px; } /*------------------------------------------------------------------------------ 9.0 - Dashboard ------------------------------------------------------------------------------*/ #wpbody-content .metabox-holder { padding-top: 10px; } #dashboard-widgets .meta-box-sortables { margin: 0 5px; } #dashboard_recent_comments div.undo { border-top-style: solid; border-top-width: 1px; margin: 0 -10px; padding: 3px 8px; font-size: 11px; } #the-comment-list td.comment p.comment-author { margin-top: 0; margin-left: 0; } #the-comment-list p.comment-author img { float: left; margin-right: 8px; } #the-comment-list p.comment-author strong a { border: none; } #the-comment-list td { vertical-align: top; } #the-comment-list td.comment { word-wrap: break-word; } #the-comment-list .check-column { padding-top: 8px; } /*------------------------------------------------------------------------------ 10.0 - List Posts (/Pages/etc) ------------------------------------------------------------------------------*/ table.fixed { table-layout: fixed; } .fixed .column-rating, .fixed .column-visible { width: 8%; } .fixed .column-date, .fixed .column-parent, .fixed .column-links { width: 10%; } .fixed .column-response, .fixed .column-author, .fixed .column-categories, .fixed .column-tags, .fixed .column-rel, .fixed .column-role { width: 15%; } .fixed .column-comments { width: 4em; padding: 8px 0; text-align: left; } .fixed .column-comments .vers { padding-left: 3px; } .fixed .column-comments a { float: left; } .fixed .column-slug { width: 25%; } .fixed .column-posts { width: 10%; } .fixed .column-icon { width: 80px; } #commentsdiv .fixed .column-author, #comments-form .fixed .column-author { width: 20%; } #commentsdiv.postbox .inside { line-height:1.4em; margin:0; } #commentsdiv.postbox .inside .row-actions { line-height:18px; } #commentsdiv.postbox .inside td { padding:1em 10px; } #commentsdiv.postbox .inside .column-comment p { } #commentsdiv.postbox .inside .column-author { width:33%; } #commentsdiv.postbox .inside p { margin:6px 10px 8px; } #commentsdiv.postbox .column-comment p { margin:0.6em 0; } #commentsdiv.postbox #replyrow td { padding:0; } .sorting-indicator { display: none; width: 7px; height: 4px; margin-top: 5px; margin-left: 7px; background-image: url(../images/sort.gif); background-repeat: no-repeat; } .fixed .column-comments .sorting-indicator { margin-top: 3px; } .widefat th.sortable, .widefat th.sorted { padding: 0; } th.sortable a, th.sorted a { display: block; overflow: hidden; padding: 7px 7px 8px; } .fixed .column-comments.sortable a, .fixed .column-comments.sorted a { padding: 8px 0; } th.sortable a span, th.sorted a span { float: left; cursor: pointer; } th.sorted.asc .sorting-indicator, th.desc:hover span.sorting-indicator { display: block; background-position: 0 0; } th.sorted.desc .sorting-indicator, th.asc:hover span.sorting-indicator { display: block; background-position: -7px 0; } /* Bulk Actions */ .tablenav-pages a { border-bottom-style: solid; border-bottom-width: 2px; font-weight: bold; margin-right: 1px; padding: 0 2px; } .tablenav-pages .current-page { text-align: center; } .tablenav-pages .next-page { margin-left: 2px; } .tablenav a.button-secondary { display: block; margin: 3px 8px 0 0; } .tablenav { clear: both; height: 30px; margin: 6px 0 4px; vertical-align: middle; } .tablenav .tablenav-pages { float: right; display: block; cursor: default; height: 30px; line-height: 30px; font-size: 11px; } .tablenav .one-page { display: none; } .tablenav .tablenav-pages a, .tablenav-pages span.current { text-decoration: none; border: none; padding: 3px 6px; border-width: 1px; border-style: solid; -moz-border-radius: 5px; -khtml-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; } .tablenav .tablenav-pages a.disabled:hover { cursor: default; } .tablenav .tablenav-pages a.disabled:active { cursor: default; } .tablenav .displaying-num { margin-right: 10px; font-size: 12px; font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif; font-style: italic; } .tablenav .actions { padding: 2px 8px 0 0; } .tablenav .delete { margin-right: 20px; } .view-switch { float: right; margin: 6px 8px 0; } .view-switch a { text-decoration: none; } .filter { float: left; margin: -5px 0 0 10px; } .filter .subsubsub { margin-left: -10px; margin-top: 13px; } .screen-per-page { width: 3em; } #posts-filter fieldset { float: left; margin: 0 1.5ex 1em 0; padding: 0; } #posts-filter fieldset legend { padding: 0 0 .2em 1px; } span.post-state-format { font-weight: normal; } /*------------------------------------------------------------------------------ 10.1 - Inline Editing ------------------------------------------------------------------------------*/ /* .quick-edit* is for Quick Edit .bulk-edit* is for Bulk Edit .inline-edit* is for everything */ /* Layout */ tr.inline-edit-row td { padding: 0 0.5em; } #wpbody-content .inline-edit-row fieldset { font-size: 12px; float: left; margin: 0; padding: 0; width: 100%; } #wpbody-content .inline-edit-row fieldset .inline-edit-col { padding: 0 0.5em; } #wpbody-content .quick-edit-row-page fieldset.inline-edit-col-right .inline-edit-col { border-width: 0 0 0 1px; border-style: none none none solid; } #wpbody-content .quick-edit-row-post .inline-edit-col-left { width: 40%; } #wpbody-content .quick-edit-row-post .inline-edit-col-right { width: 39%; } #wpbody-content .inline-edit-row-post .inline-edit-col-center { width: 20%; } #wpbody-content .quick-edit-row-page .inline-edit-col-left { width: 50%; } #wpbody-content .quick-edit-row-page .inline-edit-col-right, #wpbody-content .bulk-edit-row-post .inline-edit-col-right { width: 49%; } #wpbody-content .bulk-edit-row .inline-edit-col-left { width: 30%; } #wpbody-content .bulk-edit-row-page .inline-edit-col-right { width: 69%; } #wpbody-content .bulk-edit-row .inline-edit-col-bottom { float: right; width: 69%; } #wpbody-content .inline-edit-row-page .inline-edit-col-right, #wpbody-content .bulk-edit-row-post .inline-edit-col-right { margin-top: 27px; } .inline-edit-row fieldset .inline-edit-group { clear: both; } .inline-edit-row fieldset .inline-edit-group:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } .inline-edit-row p.submit { clear: both; padding: 0.5em; margin: 0.5em 0 0; } .inline-edit-row span.error { line-height: 22px; margin: 0 15px; padding: 3px 5px; } /* Positioning */ .inline-edit-row h4 { margin: .2em 0; padding: 0; line-height: 23px; } .inline-edit-row fieldset span.title, .inline-edit-row fieldset span.checkbox-title { margin: 0; padding: 0; line-height: 27px; } .inline-edit-row fieldset label, .inline-edit-row fieldset span.inline-edit-categories-label { display: block; margin: .2em 0; } .inline-edit-row fieldset label.inline-edit-tags { margin-top: 0; } .inline-edit-row fieldset label.inline-edit-tags span.title { margin: .2em 0; } .inline-edit-row fieldset label span.title { display: block; float: left; width: 5em; } .inline-edit-row fieldset label span.input-text-wrap { display: block; margin-left: 5em; } .quick-edit-row-post fieldset.inline-edit-col-right label span.title { width: auto; padding-right: 0.5em; } .inline-edit-row .input-text-wrap input[type=text] { width: 100%; } .inline-edit-row fieldset label input[type=checkbox] { vertical-align: text-bottom; } .inline-edit-row fieldset label textarea { width: 100%; height: 4em; } #wpbody-content .bulk-edit-row fieldset .inline-edit-group label { max-width: 50%; } #wpbody-content .quick-edit-row fieldset .inline-edit-group label.alignleft:first-child { margin-right: 0.5em } /* Styling */ .inline-edit-row h4 { text-transform: uppercase; } .inline-edit-row fieldset span.title, .inline-edit-row fieldset span.checkbox-title { font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif; font-style: italic; line-height: 1.8em; } /* Specific Elements */ .inline-edit-row fieldset input[type="text"], .inline-edit-row fieldset textarea { border-style: solid; border-width: 1px; } .inline-edit-row fieldset .inline-edit-date { float: left; } .inline-edit-row fieldset input[name=jj], .inline-edit-row fieldset input[name=hh], .inline-edit-row fieldset input[name=mn] { font-size: 12px; width: 2.1em; } .inline-edit-row fieldset input[name=aa] { font-size: 12px; width: 3.5em; } .inline-edit-row fieldset label input.inline-edit-password-input { width: 8em; } .inline-edit-row .catshow, .inline-edit-row .cathide { cursor: pointer; } ul.cat-checklist { height: 12em; border-style: solid; border-width: 1px; overflow-y: scroll; padding: 0 5px; margin: 0; } #bulk-titles { display: block; height: 12em; border-style: solid; border-width: 1px; overflow-y: scroll; padding: 0 5px; margin: 0 0 5px; } .inline-edit-row fieldset ul.cat-checklist li, .inline-edit-row fieldset ul.cat-checklist input { margin: 0; } .inline-edit-row fieldset ul.cat-checklist label, .inline-edit-row .catshow, .inline-edit-row .cathide, .inline-edit-row #bulk-titles div { font-family: "Lucida Grande", Verdana, Arial, "Bitstream Vera Sans", sans-serif; font-style: normal; font-size: 11px; } table .inline-edit-row fieldset ul.cat-hover { height: auto; max-height: 30em; overflow-y: auto; position: absolute; } .inline-edit-row fieldset label input.inline-edit-menu-order-input { width: 3em; } .inline-edit-row fieldset label input.inline-edit-slug-input { width: 75%; } .quick-edit-row-post fieldset label.inline-edit-status { float: left; } #bulk-titles { line-height: 140%; } #bulk-titles div { margin: 0.2em 0.3em; } #bulk-titles div a { cursor: pointer; display: block; float: left; height: 10px; margin: 3px 3px 0 -2px; overflow: hidden; position: relative; text-indent: -9999px; width: 10px; } /*------------------------------------------------------------------------------ 11.0 - Write/Edit Post Screen ------------------------------------------------------------------------------*/ #titlediv { position: relative; margin-bottom: 20px; } #titlediv label { cursor: text; } #titlediv div.inside { margin: 0; } #poststuff #titlewrap { border: 0; padding: 0; } #titlediv #title { padding: 3px 4px; border-width: 1px; border-style: solid; -moz-border-radius: 6px; -khtml-border-radius: 6px; -webkit-border-radius: 6px; border-radius: 6px; font-size: 1.7em; line-height: 100%; width: 100%; outline: none; } #titlediv #title-prompt-text { color: #bbb; position: absolute; font-size: 1.7em; padding: 8px; } #poststuff .inside-submitbox, #side-sortables .inside-submitbox { margin: 0 3px; font-size: 11px; } input#link_description, input#link_url { width: 98%; } #pending { background: 0 none; border: 0 none; padding: 0; font-size: 11px; margin-top: -1px; } #edit-slug-box { height: 1em; margin-top: 8px; padding: 0 7px; } #editable-post-name-full { display: none; } #editable-post-name input { width: 16em; } .postarea h3 label { float: left; } .postarea #add-media-button { float: right; margin: 7px 0pt 0pt; position: relative; right: 10px; } #poststuff #editor-toolbar { height: 30px; } .wp_themeSkin tr.mceFirst td.mceToolbar { border-width: 0 0 1px; border-style: none none solid; } #edButtonPreview, #edButtonHTML { height: 18px; margin: 5px 5px 0 0; padding: 4px 5px 2px; float: right; cursor: pointer; border-width: 1px; border-style: solid; -moz-border-radius: 3px 3px 0 0; -webkit-border-top-right-radius: 3px; -webkit-border-top-left-radius: 3px; -khtml-border-top-right-radius: 3px; -khtml-border-top-left-radius: 3px; border-top-right-radius: 3px; border-top-left-radius: 3px; } .js .theEditor { color: white; } #poststuff #edButtonHTML { margin-right: 15px; } #media-buttons { cursor: default; padding: 8px 8px 0; } #media-buttons a { cursor: pointer; padding: 0 0 5px 10px; } #media-buttons img, #submitpost #ajax-loading, #submitpost .ajax-loading { vertical-align: middle; } #wpcontent .ajax-loading { visibility: hidden; } .submitbox .submit { text-align: left; padding: 12px 10px 10px; font-size: 11px; } .submitbox .submitdelete { border-bottom-width: 1px; border-bottom-style: solid; text-decoration: none; padding: 1px 2px; } .inside-submitbox #post_status { margin: 2px 0 2px -2px; } .submitbox .submit a:hover { border-bottom-width: 1px; border-bottom-style: solid; } .submitbox .submit input { margin-bottom: 8px; margin-right: 4px; padding: 6px; } #post-status-select, #post-format { line-height: 2.5em; margin-top: 3px; } /* Post Screen */ #post-body #normal-sortables { min-height: 50px; } #post-body #advanced-sortables { min-height: 20px; } .postbox { position: relative; min-width: 255px; width: 99.5%; } #trackback_url { width: 99%; } #normal-sortables .postbox .submit { background: transparent none; border: 0 none; float: right; padding: 0 12px; margin:0; } #side-sortables .category-add input { width: 94%; } #side-sortables .category-add select { width: 100%; } #side-sortables .category-add input.category-add-sumbit, #post-body .category-add input.category-add input.category-add-sumbit { width: auto; } #post-body ul.category-tabs, #post-body ul.add-menu-item-tabs { float: left; width: 120px; text-align: right; /* Negative margin for the sake of those without JS: all tabs display */ margin: 0 -120px 0 5px; padding: 0; } #post-body ul.category-tabs li, #post-body ul.add-menu-item-tabs li { padding: 8px; } #post-body ul.category-tabs li.tabs, #post-body ul.add-menu-item-tabs li.tabs { -moz-border-radius: 3px 0 0 3px; -webkit-border-top-left-radius: 3px; -webkit-border-bottom-left-radius: 3px; -khtml-border-top-left-radius: 3px; -khtml-border-bottom-left-radius: 3px; border-top-left-radius: 3px; border-bottom-left-radius: 3px; } #post-body ul.category-tabs li.tabs a, #post-body ul.add-menu-item-tabs li.tabs a { font-weight: bold; text-decoration: none; } .wp-tab-panel, .categorydiv div.tabs-panel, .customlinkdiv div.tabs-panel, .posttypediv div.tabs-panel, .taxonomydiv div.tabs-panel, #linkcategorydiv div.tabs-panel { height: 200px; overflow: auto; padding: 0.5em 0.9em; border-style: solid; border-width: 1px; } .nav-menus-php .customlinkdiv div.tabs-panel, .nav-menus-php .posttypediv div.tabs-panel, .nav-menus-php .taxonomydiv div.tabs-panel { height: auto; max-height: 205px; } div.tabs-panel-active { display:block; } div.tabs-panel-inactive { display:none; } #post-body .categorydiv div.tabs-panel, .taxonomy div.tabs-panel, #post-body #linkcategorydiv div.tabs-panel { margin: 0 5px 0 125px; } #side-sortables .category-tabs li, #side-sortables .add-menu-item-tabs li, .wp-tab-bar li { display: inline; } #side-sortables .category-tabs a, #side-sortables .add-menu-item-tabs a, .wp-tab-bar a { text-decoration: none; } #side-sortables .category-tabs, #side-sortables .add-menu-item-tabs, .wp-tab-bar { margin-bottom: 3px; } .categorydiv ul, .customlinkdiv ul, .posttypediv ul, .taxonomydiv ul, #linkcategorydiv ul { list-style: none; padding: 0; margin: 0; } #normal-sortables .postbox #replyrow .submit { float: none; margin: 0; padding: 3px 7px; } #side-sortables .submitbox .submit input, #side-sortables .submitbox .submit .preview, #side-sortables .submitbox .submit a.preview:hover { border: 0 none; } #side-sortables .inside-submitbox .insidebox, .stuffbox .insidebox { margin: 11px 0; } #side-sortables .comments-box, #normal-sortables .comments-box { border: 0 none; } ul.category-tabs, ul.add-menu-item-tabs, ul.wp-tab-bar { margin-top: 12px; } #side-sortables .comments-box thead th, #normal-sortables .comments-box thead th { background: transparent; padding: 0 7px 4px; font-style: italic; } ul.category-tabs li.tabs, ul.add-menu-item-tabs li.tabs, .wp-tab-active { border-style: solid solid none; border-width: 1px 1px 0; } #commentsdiv img.waiting { padding-left: 5px; } #post-body .category-tabs li.tabs, #post-body .add-menu-item-tabs li.tabs { border-style: solid none solid solid; border-width: 1px 0 1px 1px; margin-right: -1px; } ul.category-tabs li, ul.add-menu-item-tabs li, ul.wp-tab-bar li { padding: 5px; -moz-border-radius: 3px 3px 0 0; -webkit-border-top-left-radius: 3px; -webkit-border-top-right-radius: 3px; -khtml-border-top-left-radius: 3px; -khtml-border-top-right-radius: 3px; border-top-left-radius: 3px; border-top-right-radius: 3px; } /* positioning etc. */ form#tags-filter { position: relative; } p.search-box { float: right; margin: -5px 0 0; } .screen-per-page { width: 3em; } #posts-filter fieldset { float: left; margin: 0 1.5ex 1em 0; padding: 0; } #posts-filter fieldset legend { padding: 0 0 .2em 1px; } /* Edit posts */ td.post-title strong, td.plugin-title strong { display: block; margin-bottom: .2em; } td.post-title p, td.plugin-title p { margin: 6px 0; } /* Global classes */ .wp-hidden-children .wp-hidden-child, .ui-tabs-hide { display: none; } .commentlist .avatar { vertical-align: text-top; } #post-body .tagsdiv #newtag { margin-right: 5px; width: 16em; } #side-sortables input#post_password { width: 94% } #side-sortables .tagsdiv #newtag { width: 68%; } #post-status-info { border-width: 0 1px 1px; border-style: none solid solid; width: 100%; -moz-border-radius: 0 0 6px 6px; -webkit-border-bottom-left-radius: 6px; -webkit-border-bottom-right-radius: 6px; -khtml-border-bottom-left-radius: 6px; -khtml-border-bottom-right-radius: 6px; border-bottom-left-radius: 6px; border-bottom-right-radius: 6px; } #post-status-info td { font-size: 11px; } .autosave-info { padding: 2px 15px 2px 2px; text-align: right; } #editorcontent #post-status-info { border: none; } #post-body .wp_themeSkin .mceStatusbar a.mceResize { display: block; background: transparent url(../images/resize.gif) no-repeat scroll right bottom; width: 12px; cursor: se-resize; margin: 0 2px; position: relative; top: 22px; } #wp-word-count { display: block; padding: 2px 7px; } #timestampdiv select { height: 20px; line-height: 14px; padding: 0; vertical-align: top; } #jj, #hh, #mn { width: 2em; padding: 1px; font-size: 12px; } #aa { width: 3.4em; padding: 1px; font-size: 12px; } .curtime #timestamp { background-repeat: no-repeat; background-position: left top; padding-left: 18px; } #timestampdiv { padding-top: 5px; line-height: 23px; } #timestampdiv p { margin: 8px 0 6px; } #timestampdiv input { border-width: 1px; border-style: solid; } /*------------------------------------------------------------------------------ 11.1 - Custom Fields ------------------------------------------------------------------------------*/ #postcustomstuff table, #postcustomstuff input, #postcustomstuff textarea { border-width: 1px; border-style: solid; -moz-border-radius: 3px; -khtml-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; } #postcustomstuff .updatemeta, #postcustomstuff .deletemeta { margin: auto; } #postcustomstuff thead th { padding: 5px 8px 8px; } #postcustom #postcustomstuff .submit { border: 0 none; float: none; padding: 5px 8px; } #side-sortables #postcustom #postcustomstuff .submit { padding: 0 5px; } #side-sortables #postcustom #postcustomstuff td.left input { margin: 3px 3px 0; } #side-sortables #postcustom #postcustomstuff #the-list textarea { height: 85px; margin: 3px; } #postcustomstuff table { margin: 0; width: 100%; border-width: 1px; border-style: solid; border-spacing: 0; } #postcustomstuff table input, #postcustomstuff table select, #postcustomstuff table textarea { width: 95%; margin: 8px 0 8px 8px; } #postcustomstuff th.left, #postcustomstuff td.left { width: 38%; } #postcustomstuff .submit input { width: auto; } #postcustomstuff #newmeta .submit { padding: 0 8px; } #postcustomstuff table #addmetasub { width: auto; } #postcustomstuff #newmetaleft { vertical-align: top; } #postcustomstuff #newmetaleft a { padding: 0 10px; text-decoration: none; } /*------------------------------------------------------------------------------ 11.2 - Post Revisions ------------------------------------------------------------------------------*/ table.diff { width: 100%; } table.diff col.content { width: 50%; } table.diff tr { background-color: transparent; } table.diff td, table.diff th { padding: .5em; font-family: Consolas, Monaco, Courier, monospace; border: none; } table.diff .diff-deletedline del, table.diff .diff-addedline ins { text-decoration: none; } /*------------------------------------------------------------------------------ 12.0 - Categories ------------------------------------------------------------------------------*/ .category-adder { margin-left: 120px; padding: 4px 0; } .category-adder h4 { margin: 0 0 8px; } #side-sortables .category-adder { margin: 0; } #post-body .category-add input, .category-add select { width: 30%; } #side-sortables .category-add select { width: 100%; } #side-sortables .category-add input.category-add-sumbit, #post-body .category-add input.category-add input.category-add-sumbit { width: auto; } #post-body ul.category-tabs, #post-body ul.add-menu-item-tabs { float: left; width: 120px; text-align: right; /* Negative margin for the sake of those without JS: all tabs display */ margin: 0 -120px 0 5px; padding: 0; } #post-body ul.category-tabs li, #post-body ul.add-menu-item-tabs li { padding: 8px; } #post-body ul.category-tabs li.tabs, #post-body ul.add-menu-item-tabs li.tabs { -moz-border-radius: 3px 0 0 3px; -webkit-border-top-left-radius: 3px; -webkit-border-bottom-left-radius: 3px; -khtml-border-top-left-radius: 3px; -khtml-border-bottom-left-radius: 3px; border-top-left-radius: 3px; border-bottom-left-radius: 3px; } #post-body ul.category-tabs li.tabs a, #post-body ul.add-menu-item-tabs li.tabs a { font-weight: bold; text-decoration: none; } .categorydiv div.tabs-panel, .customlinkdiv div.tabs-panel, .posttypediv div.tabs-panel, .taxonomydiv div.tabs-panel, #linkcategorydiv div.tabs-panel { height: 200px; overflow: auto; padding: 0.5em 0.9em; border-style: solid; border-width: 1px; } .nav-menus-php .customlinkdiv div.tabs-panel, .nav-menus-php .posttypediv div.tabs-panel, .nav-menus-php .taxonomydiv div.tabs-panel { height: auto; max-height: 205px; } div.tabs-panel-active { display:block; } div.tabs-panel-inactive { display:none; } #post-body .categorydiv div.tabs-panel, .taxonomy div.tabs-panel, #post-body #linkcategorydiv div.tabs-panel { margin: 0 5px 0 125px; } #side-sortables .category-tabs li, #side-sortables .add-menu-item-tabs li { display: inline; } #side-sortables .category-tabs a, #side-sortables .add-menu-item-tabs a { text-decoration: none; } #side-sortables .category-tabs, #side-sortables .add-menu-item-tabs { margin-bottom: 3px; } .categorydiv ul, .customlinkdiv ul, .posttypediv ul, .taxonomydiv ul, #linkcategorydiv ul { list-style: none; padding: 0; margin: 0; } #front-page-warning, #front-static-pages ul, ul.export-filters, .inline-editor ul.cat-checklist ul, .categorydiv ul.categorychecklist ul, .customlinkdiv ul.categorychecklist ul, .posttypediv ul.categorychecklist ul, .taxonomydiv ul.categorychecklist ul, #linkcategorydiv ul.categorychecklist ul { margin-left: 18px; } ul.categorychecklist li { margin: 0; padding: 0; line-height: 19px; word-wrap: break-word; } .categorydiv .tabs-panel, .customlinkdiv .tabs-panel, .posttypediv .tabs-panel, .taxonomydiv .tabs-panel { border-width: 3px; border-style: solid; } ul.category-tabs, ul.add-menu-item-tabs { margin-top: 12px; } ul.category-tabs li.tabs, ul.add-menu-item-tabs li.tabs { border-style: solid solid none; border-width: 1px 1px 0; } #post-body .category-tabs li.tabs, #post-body .add-menu-item-tabs li.tabs { border-style: solid none solid solid; border-width: 1px 0 1px 1px; margin-right: -1px; } ul.category-tabs li, ul.add-menu-item-tabs li { padding: 5px; -moz-border-radius: 3px 3px 0 0; -webkit-border-top-left-radius: 3px; -webkit-border-top-right-radius: 3px; -khtml-border-top-left-radius: 3px; -khtml-border-top-right-radius: 3px; border-top-left-radius: 3px; border-top-right-radius: 3px; } .form-wrap { margin: 10px 0; width: 97%; } .form-wrap p, .form-wrap label { font-size: 11px; } .form-wrap label { display: block; padding: 2px; font-size: 12px; } .form-field input, .form-field textarea { border-style: solid; border-width: 1px; width: 95%; } p.description, .form-wrap p { margin: 2px 0 5px; } p.help, p.description, span.description, .form-wrap p { font-size: 12px; font-style: italic; font-family: "Lucida Grande", Verdana, Arial, "Bitstream Vera Sans", sans-serif; } .form-wrap .form-field { margin: 0 0 10px; padding: 8px; } .col-wrap h3 { margin: 12px 0; font-size: 1.1em; } .col-wrap p.submit { margin-top: -10px; } /*------------------------------------------------------------------------------ 13.0 - Tags ------------------------------------------------------------------------------*/ .taghint { color: #aaa; margin: 15px 0 -24px 12px; } #poststuff .tagsdiv .howto { margin: 0 0 6px 8px; } .ajaxtag .newtag { background: transparent; position: relative; } .tagsdiv .newtag { width: 180px; } .tagsdiv .the-tags { display: block; height: 60px; margin: 0 auto; overflow: auto; width: 260px; } #post-body-content .tagsdiv .the-tags { margin: 0 5px; } p.popular-tags { -moz-border-radius: 8px; -khtml-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; border-width: 1px; border-style: solid; line-height: 2em; padding: 8px 12px 12px; text-align: justify; } p.popular-tags a { padding: 0 3px; } .tagcloud { width: 97%; margin: 0 0 40px; text-align: justify; } .tagcloud h3 { margin: 2px 0 12px; } .ac_results { padding: 0; margin: 0; list-style: none; position: absolute; z-index: 10000; display: none; border-width: 1px; border-style: solid; } .ac_results li { padding: 2px 5px; white-space: nowrap; text-align: left; } .ac_over { cursor: pointer; } .ac_match { text-decoration: underline; } /*------------------------------------------------------------------------------ 14.0 - Media Screen ------------------------------------------------------------------------------*/ #wpbody-content #media-items .describe { border-collapse: collapse; width: 100%; border-top-style: solid; border-top-width: 1px; clear: both; cursor: default; padding: 5px; } #wpbody-content .describe th { vertical-align: top; text-align: left; padding: 10px; width: 140px; } #wpbody-content .describe .media-item-info tr { background-color: transparent; } #wpbody-content .describe .media-item-info td { padding: 4px 10px 0; } .describe .media-item-info .A1B1 { padding: 0 0 0 10px; } #wpbody-content .filename { padding: 0 10px; } #wpbody-content .media-item .thumbnail { max-height: 128px; max-width: 128px; } #wpbody-content #async-upload-wrap a { display: none; } .media-upload-form td label { margin-right: 6px; margin-left: 2px; } .media-upload-form .align .field label { display: inline; padding: 0 0 0 22px; margin: 0 1em 0 0; font-weight: bold; } .media-upload-form tr.image-size label { margin: 0 0 0 3px; font-weight: bold; } .media-upload-form th.label label { font-weight: bold; margin: 0.5em; font-size: 13px; } .media-upload-form th.label label span { padding: 0 5px; } abbr.required { border: medium none; text-decoration: none; } #wpbody-content .describe input[type="text"], #wpbody-content .describe textarea { width: 460px; } #wpbody-content .describe p.help { margin: 0; padding: 0 0 0 5px; } .media-item .error-div a.dismiss, .describe-toggle-on, .describe-toggle-off { display: block; line-height: 36px; float: right; margin-right: 20px; } .describe-toggle-off { display: none; } #wpbody-content .media-item { border-bottom-style: solid; border-bottom-width: 1px; min-height: 36px; position: relative; width: 100%; } #wpbody-content .media-single .media-item { border-bottom-style: none; border-bottom-width: 0; } #wpbody-content #media-items { border-style: solid solid none; border-width: 1px; width: 670px; } #wpbody-content #media-items .filename { line-height: 36px; overflow: hidden; } .media-item .error-div { padding-left: 10px; } .media-item .pinkynail { float: left; margin: 2px; max-width: 40px; max-height: 32px; } .media-item .startopen, .media-item .startclosed { display: none; } .media-item .original { position: relative; height: 34px; width: 503px; } .media-item .percent { font-weight: bold; } .crunching { display: block; line-height: 32px; text-align: right; margin-right: 5px; } .progress { position: relative; margin-bottom: -36px; height: 36px; } .bar { width: 0; height: 100%; border-right-width: 3px; border-right-style: solid; } .upload-php .fixed .column-parent { width: 25%; } /*------------------------------------------------------------------------------ 14.1 - Media Uploader ------------------------------------------------------------------------------*/ .find-box { width: 500px; height: 300px; overflow: hidden; padding: 33px 5px 40px; position: absolute; z-index: 1000; } .find-box-head { cursor: move; font-weight: bold; height: 2em; line-height: 2em; padding: 1px 12px; position: absolute; top: 5px; width: 100%; } .find-box-inside { overflow: auto; width: 100%; height: 100%; } .find-box-search { padding: 12px; border-width: 1px; border-style: none none solid; } #find-posts-response { margin: 8px 0; padding: 0 1px; } #find-posts-response table { width: 100%; } #find-posts-response .found-radio { padding: 5px 0 0 8px; width: 15px; } .find-box-buttons { width: 480px; margin: 8px; } .find-box-search label { padding-right: 6px; } .find-box #resize-se { position: absolute; right: 1px; bottom: 1px; } /* favorite-actions */ #favorite-actions { float: right; margin: 11px 12px 0; min-width: 130px; position: relative; } #favorite-first { -moz-border-radius: 12px; -khtml-border-radius: 12px; -webkit-border-radius: 12px; border-radius: 12px; line-height: 15px; padding: 3px 30px 4px 12px; border-width: 1px; border-style: solid; } #favorite-inside { margin: 0 0 0 0px; padding: 2px 1px; border-width: 1px; border-style: solid; position: absolute; z-index: 11; display: none; -moz-border-radius: 0 0 12px 12px; -webkit-border-bottom-right-radius: 12px; -webkit-border-bottom-left-radius: 12px; -khtml-border-bottom-right-radius: 12px; -khtml-border-bottom-left-radius: 12px; border-bottom-right-radius: 12px; border-bottom-left-radius: 12px; } #favorite-actions a { display: block; text-decoration: none; font-size: 11px; } #favorite-inside a { padding: 3px 5px 3px 10px; } #favorite-toggle { height: 22px; position: absolute; right: 0; top: 1px; width: 28px; } #favorite-actions .slide-down { -moz-border-radius: 12px 12px 0 0; -webkit-border-bottom-right-radius: 0; -webkit-border-bottom-left-radius: 0; -khtml-border-bottom-right-radius: 0; -khtml-border-bottom-left-radius: 0; border-bottom-right-radius: 0; border-bottom-left-radius: 0; border-bottom: none; } ul#dismissed-updates { display: none; } form.upgrade { margin-top: 8px; } form.upgrade .hint { font-style: italic; font-size: 85%; margin: -0.5em 0 2em 0; } #poststuff .inside .the-tagcloud { margin: 5px 0 10px; padding: 8px; border-width: 1px; border-style: solid; line-height: 1.8em; word-spacing: 3px; -moz-border-radius: 6px; -khtml-border-radius: 6px; -webkit-border-radius: 6px; border-radius: 6px; } br.clear { height: 2px; line-height: 2px; } .swfupload { margin: 5px 10px; vertical-align: middle; } /*------------------------------------------------------------------------------ 14.2 - Image Editor ------------------------------------------------------------------------------*/ .describe .image-editor { vertical-align: top; } .imgedit-wrap { position: relative; } .imgedit-settings p { margin: 8px 0; } .describe .imgedit-wrap table td { vertical-align: top; padding-top: 0; } .imgedit-wrap p, .describe .imgedit-wrap table td { font-size: 11px; line-height: 18px; } .describe .imgedit-wrap table td.imgedit-settings { padding: 0 5px; } td.imgedit-settings input { vertical-align: middle; } .imgedit-wait { position: absolute; top: 0; background: #FFFFFF url(../images/wpspin_light.gif) no-repeat scroll 22px 10px; opacity: 0.7; filter: alpha(opacity=70); width: 100%; height: 500px; display: none; } .media-disabled, .imgedit-settings .disabled { color: grey; } .imgedit-wait-spin { padding: 0 4px 4px; vertical-align: bottom; visibility: hidden; } .imgedit-menu { margin: 0 0 12px; min-width: 300px; } .imgedit-menu div { float: left; width: 32px; height: 32px; -moz-border-radius: 4px; -khtml-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; border-width: 1px; border-style: solid; } .imgedit-crop-wrap { position: relative; } .imgedit-crop { background: transparent url(../images/imgedit-icons.png) no-repeat scroll -9px -31px; margin: 0 8px 0 0; } .imgedit-crop.disabled:hover { background-position: -9px -31px; } .imgedit-crop:hover { background-position: -9px -1px; } .imgedit-rleft { background: transparent url(../images/imgedit-icons.png) no-repeat scroll -46px -31px; margin: 0 3px; } .imgedit-rleft.disabled:hover { background-position: -46px -31px; } .imgedit-rleft:hover { background-position: -46px -1px; } .imgedit-rright { background: transparent url(../images/imgedit-icons.png) no-repeat scroll -77px -31px; margin: 0 8px 0 3px; } .imgedit-rright.disabled:hover { background-position: -77px -31px; } .imgedit-rright:hover { background-position: -77px -1px; } .imgedit-flipv { background: transparent url(../images/imgedit-icons.png) no-repeat scroll -115px -31px; margin: 0 3px; } .imgedit-flipv.disabled:hover { background-position: -115px -31px; } .imgedit-flipv:hover { background-position: -115px -1px; } .imgedit-fliph { background: transparent url(../images/imgedit-icons.png) no-repeat scroll -147px -31px; margin: 0 8px 0 3px; } .imgedit-fliph.disabled:hover { background-position: -147px -31px; } .imgedit-fliph:hover { background-position: -147px -1px; } .imgedit-undo { background: transparent url(../images/imgedit-icons.png) no-repeat scroll -184px -31px; margin: 0 3px; } .imgedit-undo.disabled:hover { background-position: -184px -31px; } .imgedit-undo:hover { background-position: -184px -1px; } .imgedit-redo { background: transparent url(../images/imgedit-icons.png) no-repeat scroll -215px -31px; margin: 0 8px 0 3px; } .imgedit-redo.disabled:hover { background-position: -215px -31px; } .imgedit-redo:hover { background-position: -215px -1px; } .imgedit-applyto img { margin: 0 8px 0 0; } .imgedit-group-top { margin: 5px 0; } .imgedit-applyto .imgedit-label { padding: 2px 0 0; display: block; } .imgedit-help { display: none; font-style: italic; margin-bottom: 8px; } .imgedit-help ul li { font-size: 11px; } a.imgedit-help-toggle { text-decoration: none; } #wpbody-content .imgedit-response div { width: 600px; margin: 8px; } .form-table td.imgedit-response { padding: 0; } .imgedit-submit { margin: 8px 0; } .imgedit-submit-btn { margin-left: 20px; } .imgedit-wrap .nowrap { white-space: nowrap; } span.imgedit-scale-warn { color: red; font-size: 20px; font-style: normal; visibility: hidden; vertical-align: middle; } .imgedit-group { border-width: 1px; border-style: solid; -moz-border-radius: 8px; -khtml-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; margin-bottom: 8px; padding: 2px 10px; } /*------------------------------------------------------------------------------ 15.0 - Comments Screen ------------------------------------------------------------------------------*/ .form-table { border-collapse: collapse; margin-top: 0.5em; width: 100%; margin-bottom: -8px; clear: both; } .form-table td { margin-bottom: 9px; padding: 8px 10px; line-height: 20px; font-size: 11px; } .form-table th, .form-wrap label { font-weight: normal; text-shadow: rgba(255,255,255,1) 0 1px 0; } .form-table th { vertical-align: top; text-align: left; padding: 10px; width: 200px; } .form-table th.th-full { width: auto; } .form-table div.color-option { display: block; clear: both; margin-top: 12px; } .form-table input.tog { margin-top: 2px; margin-right: 2px; float: left; } .form-table td p { margin-top: 4px; } .form-table table.color-palette { vertical-align: bottom; float: left; margin: -12px 3px 11px; } .form-table .color-palette td { border-width: 1px 1px 0; border-style: solid solid none; height: 10px; line-height: 20px; width: 10px; } .commentlist li { padding: 1em 1em .2em; margin: 0; border-bottom-width: 1px; border-bottom-style: solid; } .commentlist li li { border-bottom: 0; padding: 0; } .commentlist p { padding: 0; margin: 0 0 .8em; } /* reply to comments */ #replyrow { font-size: 11px; } #replyrow input { border-width: 1px; border-style: solid; } #replyrow td { padding: 2px; } #replyrow #editorcontainer { border: 0 none; } #replysubmit { margin: 0; padding: 3px 7px; text-align:center; } #replysubmit img.waiting, .inline-edit-save img.waiting { padding: 4px 10px 0; vertical-align: top; float: right; } #replysubmit .button { margin-right: 5px; } #replysubmit .error { color:red; line-height:21px; text-align:center; vertical-align:center; } #replyrow #editor-toolbar { display: none; } #replyhead { font-size: 12px; font-weight: bold; padding: 2px 10px 4px; } #edithead .inside { float: left; padding: 3px 0 2px 5px; margin: 0; text-align: center; font-size: 11px; } #edithead .inside input { width: 180px; font-size: 11px; } #edithead label { padding: 2px 0; } #replycontainer { padding: 5px; border: 0 none; height: 120px; overflow: hidden; position: relative; } #replycontent { resize: none; margin: 0; width: 100%; height: 100%; padding: 0; line-height: 150%; border: 0 none; outline: none; font-size: 12px; } #replyrow #ed_reply_toolbar { margin: 0; padding: 2px 3px; } .comment-ays { margin-bottom: 0; border-style: solid; border-width: 1px; } .comment-ays th { border-right-style: solid; border-right-width: 1px; } .trash-undo-inside, .spam-undo-inside { margin: 1px 8px 1px 0; line-height: 16px; } .spam-undo-inside .avatar, .trash-undo-inside .avatar { height: 20px; width: 20px; margin-right: 8px; vertical-align: middle; } .stuffbox .editcomment { clear: none; } #comment-status-radio p { margin: 3px 0 5px; } #comment-status-radio input { margin: 2px 3px 5px 0; vertical-align: middle; } #comment-status-radio label { padding: 5px 0; } .commentlist .avatar { vertical-align: text-top; } /*------------------------------------------------------------------------------ 16.0 - Themes ------------------------------------------------------------------------------*/ .theme-install-php .tablenav { height:auto; } table#availablethemes { border-spacing: 0; border-width: 1px 0; border-style: solid none; margin: 10px auto; width: 100%; } table#availablethemes .no-items td{ border-width:0; padding:5px; } td.available-theme { vertical-align: top; width: 240px; margin: 0; padding: 20px; text-align: left; } table#availablethemes td { border-width: 0 1px 1px; border-style: none solid solid; } table#availablethemes td.right, table#availablethemes td.left { border-right: 0 none; border-left: 0 none; } table#availablethemes td.bottom { border-bottom: 0 none; } .available-theme a.screenshot { width: 240px; height: 180px; display: block; border-width: 1px; border-style: solid; margin-bottom: 10px; overflow: hidden; } .available-theme img { width: 240px; } .available-theme h3 { margin: 15px 0 5px; } #current-theme { margin: 1em 0 1.5em; } #current-theme a { border-bottom: none; } #current-theme h3 { font-size: 17px; font-weight: normal; margin: 0; } #current-theme .theme-description { margin-top: 5px; } #current-theme img { float: left; border-width: 1px; border-style: solid; margin-right: 1em; margin-bottom: 1.5em; width: 150px; } .theme-options span { text-transform: uppercase; font-size: 13px; } .theme-options a { font-size: 15px; } #TB_window #TB_title a.tb-theme-preview-link, #TB_window #TB_title a.tb-theme-preview-link:visited { font-weight: bold; text-decoration: none; } #TB_window #TB_title { background-color: #222; color: #cfcfcf; } #broken-themes { text-align: left; width: 50%; border-spacing: 3px; padding: 3px; } .theme-install-php h4 { margin: 2.5em 0 8px; } /*------------------------------------------------------------------------------ 16.1 - Custom Header Screen ------------------------------------------------------------------------------*/ .appearance_page_custom-header #headimg { border: 1px solid #DFDFDF; min-height: 100px; width: 100%; } .appearance_page_custom-header #upload-form p label { font-size: 11px; } .appearance_page_custom-header #available-headers .default-header { float: left; margin: 0 20px 20px 0; } .appearance_page_custom-header #available-headers label input { margin-right: 10px; } .appearance_page_custom-header #available-headers label img { vertical-align: middle; } /*------------------------------------------------------------------------------ 16.2 - Custom Background Screen ------------------------------------------------------------------------------*/ div#custom-background-image { min-height: 100px; border: 1px solid #dfdfdf; } div#custom-background-image img { max-width: 400px; max-height: 300px; } #custom-background label { padding-right: 15px; } /*------------------------------------------------------------------------------ 16.3 - Tabbed Admin Screen Interface (Experimental) ------------------------------------------------------------------------------*/ .nav-tab { border-style: solid; border-color: #ccc #ccc #f9f9f9; border-width: 1px 1px 0; color: #c1c1c1; text-shadow: rgba(255,255,255,1) 0 1px 0; font-size: 12px; line-height: 16px; display: inline-block; padding: 4px 14px 6px; text-decoration: none; margin: 0 6px -1px 0; -moz-border-radius: 5px 5px 0 0; -webkit-border-top-left-radius: 5px; -webkit-border-top-right-radius: 5px; -khtml-border-top-left-radius: 5px; -khtml-border-top-right-radius: 5px; border-top-left-radius: 5px; border-top-right-radius: 5px; } .nav-tab-active { border-width: 1px; color: #464646; } h2.nav-tab-wrapper, h3.nav-tab-wrapper { border-bottom: 1px solid #ccc; padding-bottom: 0; } h2 .nav-tab { padding: 4px 20px 6px; font: italic normal normal 24px/35px Georgia, "Times New Roman", "Bitstream Charter", Times, serif; } /*------------------------------------------------------------------------------ 17.0 - Plugins ------------------------------------------------------------------------------*/ .plugins .name, #pass-strength-result.strong, #pass-strength-result.short, .button-highlighted, input.button-highlighted, #quicktags #ed_strong, #ed_reply_toolbar #ed_reply_strong { font-weight: bold; } .plugins p { margin: 0 4px; padding: 0; } .plugins .desc p { margin: 0 0 8px; } .plugins td.desc { line-height: 1.5em; } .plugins .desc ul, .plugins .desc ol { margin: 0 0 0 2em; } .plugins .desc ul { list-style-type: disc; } .plugins .row-actions-visible { padding: 0; } .plugins tbody th.check-column { padding: 7px 0; } .plugins td, .plugins th { border-bottom: 0 none; } .plugins .inactive td, .plugins .inactive th, .plugins .active td, .plugins .active th { border-top-style: solid; border-top-width: 1px; padding: 5px 7px 0; } #wpbody-content .plugins .plugin-title, #wpbody-content .plugins .theme-title { padding-right: 12px; white-space:nowrap; } .plugins .second, .plugins .row-actions-visible { padding: 0 0 5px; } .plugins-php .widefat tfoot th, .plugins-php .widefat tfoot td { border-top-style: solid; border-top-width: 1px; } .plugin-update-tr .update-message { margin: 5px; padding: 3px 5px; border-width: 1px; border-style: solid; -moz-border-radius: 5px; -khtml-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; } .plugin-install-php h4 { margin: 2.5em 0 8px; } /*------------------------------------------------------------------------------ 18.0 - Users ------------------------------------------------------------------------------*/ #profile-page .form-table textarea { width: 500px; margin-bottom: 6px; } #profile-page .form-table #rich_editing { margin-right: 5px } #your-profile legend { font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif; font-size: 22px; } #your-profile #rich_editing { border: none; } #display_name { width: 15em; } #createuser .form-field input { width: 25em; } /*------------------------------------------------------------------------------ 19.0 - Tools ------------------------------------------------------------------------------*/ /*------------------------------------------------------------------------------ 20.0 - Settings ------------------------------------------------------------------------------*/ #utc-time, #local-time { padding-left: 25px; font-style: italic; font-family: "Lucida Grande", Verdana, Arial, "Bitstream Vera Sans", sans-serif; } .defaultavatarpicker .avatar { margin: 2px 0; vertical-align: middle; } /*------------------------------------------------------------------------------ 21.0 - Admin Footer ------------------------------------------------------------------------------*/ #footer { margin-top: -46px; border-top: 1px; border-style: solid; } #footer, #footer a { font-size: 12px; font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif; font-style: italic; } #footer p { margin: 0; padding: 15px; line-height: 15px; } #footer a { text-decoration: none; } #footer a:hover { text-decoration: underline; } /*------------------------------------------------------------------------------ 22.0 - Misc ------------------------------------------------------------------------------*/ #excerpt, .attachmentlinks { margin: 0; height: 4em; width: 98%; } #template div { margin-right: 190px; } p.pagenav { margin: 0; display: inline; } .pagenav span { font-weight: bold; margin: 0 6px; } .row-title { font-size: 12px !important; font-weight: bold; } .column-author img, .column-username img { float: left; margin-right: 10px; margin-top: 3px; } .row-actions { visibility: hidden; padding: 2px 0 0; } tr:hover .row-actions, div.comment-item:hover .row-actions { visibility: visible; } .row-actions-visible { padding: 2px 0 0; } .form-table .pre { padding: 8px; margin: 0; } table.form-table td .updated { font-size: 13px; } .tagchecklist { margin-left: 14px; font-size: 12px; overflow: auto; } .tagchecklist strong { margin-left: -8px; position: absolute; } .tagchecklist span { margin-right: 25px; display: block; float: left; font-size: 11px; line-height: 1.8em; white-space: nowrap; cursor: default; } .tagchecklist span a { margin: 6px 0pt 0pt -9px; cursor: pointer; width: 10px; height: 10px; display: block; float: left; text-indent: -9999px; overflow: hidden; position: absolute; } #poststuff h2 { margin-top: 20px; font-size: 1.5em; margin-bottom: 15px; padding: 0 0 3px; clear: left; } #poststuff h3, .metabox-holder h3 { font-size: 12px; font-weight: bold; padding: 7px 9px; margin: 0; line-height: 1; } #poststuff .inside, #poststuff .inside p { font-size: 11px; margin: 6px 6px 8px; } #poststuff .inside .submitbox p { margin: 1em 0; } #post-visibility-select, #post-formats-select { line-height: 1.5em; margin-top: 3px; } #poststuff #submitdiv .inside { margin: 0; } #titlediv, #poststuff .postarea { margin-bottom: 20px; } td.post-title strong, td.plugin-title strong { display: block; margin-bottom: .2em; } td.post-title p, td.plugin-title p { margin: 6px 0; } .wp-hidden-children .wp-hidden-child, .ui-tabs-hide { display: none; } #templateside ul li a { text-decoration: none; } .tool-box { margin: 15px 0 35px; } .tool-box .buttons { margin: 15px 0; } .tool-box .title { margin: 8px 0; font: 18px/24px Georgia, "Times New Roman", "Bitstream Charter", Times, serif; } .pressthis a { font-size: 1.2em; } #sidemenu { margin: -30px 15px 0 315px; list-style: none; position: relative; float: right; padding-left: 10px; font-size: 12px; } #sidemenu a { padding: 0 7px; display: block; float: left; line-height: 28px; border-top-width: 1px; border-top-style: solid; border-bottom-width: 1px; border-bottom-style: solid; } #sidemenu li { display: inline; line-height: 200%; list-style: none; text-align: center; white-space: nowrap; margin: 0; padding: 0; } #sidemenu a.current { font-weight: normal; padding-left: 6px; padding-right: 6px; -moz-border-radius: 4px 4px 0 0; -webkit-border-top-left-radius: 4px; -webkit-border-top-right-radius: 4px; -khtml-border-top-left-radius: 4px; -khtml-border-top-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border-width: 1px; border-style: solid; } #sidemenu li a .count-0 { display: none; } #poststuff .inside .the-tagcloud { margin: 5px 0 10px; padding: 8px; border-width: 1px; border-style: solid; line-height: 1.8em; word-spacing: 3px; -moz-border-radius: 6px; -khtml-border-radius: 6px; -webkit-border-radius: 6px; border-radius: 6px; } .plugin-install #description, .plugin-install-network #description { width: 60%; } table .vers, table .column-visible, table .column-rating { text-align: left; } /* Scrollbar fix for bulk upgrade iframe */ body.iframe { height: 98%; } /*------------------------------------------------------------------------------ 23.0 - Dead ------------------------------------------------------------------------------*/ /* - Not used anywhere in WordPress - verify and then deprecate ------------------------------------------------------------------------------*/ .anchors { margin: 10px 20px 10px 20px; } div.nav { height: 2em; padding: 7px 10px; vertical-align: text-top; margin: 5px 0; } .nav .button-secondary { padding: 2px 4px; } * html #themeselect { padding: 0 3px; height: 22px; } .settings-toggle { text-align: right; margin: 5px 7px 15px 0; font-size: 12px; } .settings-toggle h3 { margin: 0; } form#tags-filter { position: relative; } /* - Only used once or twice in all of WP - deprecate for global style ------------------------------------------------------------------------------*/ td.media-icon { text-align: center; width: 80px; padding-top: 8px; padding-bottom: 8px; } td.media-icon img { max-width: 80px; max-height: 60px; } .screen-per-page { width: 3em; } * html #template div {margin-right: 0;} .list-ajax-loading { float: right; margin-right: 9px; margin-top: -1px; } .tablenav .list-ajax-loading { margin-top: 7px; } #howto { font-size: 11px; margin: 0 5px; display: block; } .import-system {font-size: 16px;} #namediv table { width: 100%; } #namediv td.first { width: 10px; white-space: nowrap; } #namediv input { width: 98%; } #namediv p { margin: 10px 0; } #submitdiv h3 { margin-bottom: 0 !important; } /* - Used - but could/should be deprecated with a CSS reset ------------------------------------------------------------------------------*/ .zerosize { height: 0; width: 0; margin: 0; border: 0; padding: 0; overflow: hidden; position: absolute; } br.clear { height: 2px; line-height: 2px; } .checkbox { border: none; margin: 0; padding: 0; } #content { margin: 0; width: 100%; } fieldset { border: 0; padding: 0; margin: 0; } #linksubmitdiv div.inside, div.inside { padding: 0; margin: 0; } .post-categories { display: inline; margin: 0; padding: 0; } .post-categories li { display: inline; } wp-admin/custom-background.php0000644002347300047320000003066211656660271016301 0ustar vonfabpsaclnadmin_header_callback = $admin_header_callback; $this->admin_image_div_callback = $admin_image_div_callback; } /** * Set up the hooks for the Custom Background admin page. * * @since 3.0.0 */ function init() { if ( ! current_user_can('edit_theme_options') ) return; $this->page = $page = add_theme_page(__('Background'), __('Background'), 'edit_theme_options', 'custom-background', array(&$this, 'admin_page')); add_action("load-$page", array(&$this, 'admin_load')); add_action("load-$page", array(&$this, 'take_action'), 49); add_action("load-$page", array(&$this, 'handle_upload'), 49); if ( $this->admin_header_callback ) add_action("admin_head-$page", $this->admin_header_callback, 51); } /** * Set up the enqueue for the CSS & JavaScript files. * * @since 3.0.0 */ function admin_load() { add_contextual_help( $this->page, '

' . __( 'You can customize the look of your site without touching any of your theme’s code by using a custom background. Your background can be an image or a color.' ) . '

' . '

' . __( 'To use a background image, simply upload it, then choose your display options below. You can display a single instance of your image, or tile it to fill the screen. You can have your background fixed in place, so your site content moves on top of it, or you can have it scroll with your site.' ) . '

' . '

' . __( 'You can also choose a background color. If you know the hexadecimal code for the color you want, enter it in the Color field. If not, click on the Select a Color link, and a color picker will allow you to choose the exact shade you want.' ) . '

' . '

' . __( 'Don’t forget to click on the Save Changes button when you are finished.' ) . '

' . '

' . __( 'For more information:' ) . '

' . '

' . __( 'Documentation on Custom Background' ) . '

' . '

' . __( 'Support Forums' ) . '

' ); wp_enqueue_script('custom-background'); wp_enqueue_style('farbtastic'); } /** * Execute custom background modification. * * @since 3.0.0 */ function take_action() { if ( empty($_POST) ) return; if ( isset($_POST['reset-background']) ) { check_admin_referer('custom-background-reset', '_wpnonce-custom-background-reset'); remove_theme_mod('background_image'); remove_theme_mod('background_image_thumb'); $this->updated = true; return; } if ( isset($_POST['remove-background']) ) { // @TODO: Uploaded files are not removed here. check_admin_referer('custom-background-remove', '_wpnonce-custom-background-remove'); set_theme_mod('background_image', ''); set_theme_mod('background_image_thumb', ''); $this->updated = true; return; } if ( isset($_POST['background-repeat']) ) { check_admin_referer('custom-background'); if ( in_array($_POST['background-repeat'], array('repeat', 'no-repeat', 'repeat-x', 'repeat-y')) ) $repeat = $_POST['background-repeat']; else $repeat = 'repeat'; set_theme_mod('background_repeat', $repeat); } if ( isset($_POST['background-position-x']) ) { check_admin_referer('custom-background'); if ( in_array($_POST['background-position-x'], array('center', 'right', 'left')) ) $position = $_POST['background-position-x']; else $position = 'left'; set_theme_mod('background_position_x', $position); } if ( isset($_POST['background-attachment']) ) { check_admin_referer('custom-background'); if ( in_array($_POST['background-attachment'], array('fixed', 'scroll')) ) $attachment = $_POST['background-attachment']; else $attachment = 'fixed'; set_theme_mod('background_attachment', $attachment); } if ( isset($_POST['background-color']) ) { check_admin_referer('custom-background'); $color = preg_replace('/[^0-9a-fA-F]/', '', $_POST['background-color']); if ( strlen($color) == 6 || strlen($color) == 3 ) set_theme_mod('background_color', $color); else set_theme_mod('background_color', ''); } $this->updated = true; } /** * Display the custom background page. * * @since 3.0.0 */ function admin_page() { ?>

updated) ) { ?>

Visit your site to see how it looks.' ), home_url( '/' ) ); ?>

admin_image_div_callback ) { call_user_func($this->admin_image_div_callback); } else { ?>





false); $file = wp_handle_upload($_FILES['import'], $overrides); if ( isset($file['error']) ) wp_die( $file['error'] ); $url = $file['url']; $type = $file['type']; $file = $file['file']; $filename = basename($file); // Construct the object array $object = array( 'post_title' => $filename, 'post_content' => $url, 'post_mime_type' => $type, 'guid' => $url, 'context' => 'custom-background' ); // Save the data $id = wp_insert_attachment($object, $file); // Add the meta-data wp_update_attachment_metadata( $id, wp_generate_attachment_metadata( $id, $file ) ); set_theme_mod('background_image', esc_url($url)); $thumbnail = wp_get_attachment_image_src( $id, 'thumbnail' ); set_theme_mod('background_image_thumb', esc_url( $thumbnail[0] ) ); do_action('wp_create_file_in_uploads', $file, $id); // For replication $this->updated = true; } } ?> wp-admin/custom-header.php0000644002347300047320000005347411656660271015420 0ustar vonfabpsaclnadmin_header_callback = $admin_header_callback; $this->admin_image_div_callback = $admin_image_div_callback; } /** * Set up the hooks for the Custom Header admin page. * * @since 2.1.0 */ function init() { if ( ! current_user_can('edit_theme_options') ) return; $this->page = $page = add_theme_page(__('Header'), __('Header'), 'edit_theme_options', 'custom-header', array(&$this, 'admin_page')); add_action("admin_print_scripts-$page", array(&$this, 'js_includes')); add_action("admin_print_styles-$page", array(&$this, 'css_includes')); add_action("admin_head-$page", array(&$this, 'help') ); add_action("admin_head-$page", array(&$this, 'take_action'), 50); add_action("admin_head-$page", array(&$this, 'js'), 50); add_action("admin_head-$page", $this->admin_header_callback, 51); } /** * Adds contextual help. * * @since 3.0.0 */ function help() { add_contextual_help( $this->page, '

' . __( 'You can set a custom image header for your site. Simply upload the image and crop it, and the new header will go live immediately.' ) . '

' . '

' . __( 'If you want to discard your custom header and go back to the default included in your theme, click on the buttons to remove the custom image and restore the original header image.' ) . '

' . '

' . __( 'Some themes come with additional header images bundled. If you see multiple images displayed, select the one you’d like and click the Save Changes button.' ) . '

' . '

' . __( 'For more information:' ) . '

' . '

' . __( 'Documentation on Custom Header' ) . '

' . '

' . __( 'Support Forums' ) . '

' ); } /** * Get the current step. * * @since 2.6.0 * * @return int Current step */ function step() { if ( ! isset( $_GET['step'] ) ) return 1; $step = (int) $_GET['step']; if ( $step < 1 || 3 < $step ) $step = 1; return $step; } /** * Set up the enqueue for the JavaScript files. * * @since 2.1.0 */ function js_includes() { $step = $this->step(); if ( ( 1 == $step || 3 == $step ) && $this->header_text() ) wp_enqueue_script('farbtastic'); elseif ( 2 == $step ) wp_enqueue_script('imgareaselect'); } /** * Set up the enqueue for the CSS files * * @since 2.7 */ function css_includes() { $step = $this->step(); if ( ( 1 == $step || 3 == $step ) && $this->header_text() ) wp_enqueue_style('farbtastic'); elseif ( 2 == $step ) wp_enqueue_style('imgareaselect'); } /** * Check if header text is allowed * * @since 3.0.0 */ function header_text() { if ( defined( 'NO_HEADER_TEXT' ) && NO_HEADER_TEXT ) return false; return true; } /** * Execute custom header modification. * * @since 2.6.0 */ function take_action() { if ( ! current_user_can('edit_theme_options') ) return; if ( empty( $_POST ) ) return; $this->updated = true; if ( isset( $_POST['resetheader'] ) ) { check_admin_referer( 'custom-header-options', '_wpnonce-custom-header-options' ); remove_theme_mod( 'header_image' ); return; } if ( isset( $_POST['resettext'] ) ) { check_admin_referer( 'custom-header-options', '_wpnonce-custom-header-options' ); remove_theme_mod('header_textcolor'); return; } if ( isset( $_POST['removeheader'] ) ) { check_admin_referer( 'custom-header-options', '_wpnonce-custom-header-options' ); set_theme_mod( 'header_image', '' ); return; } if ( isset( $_POST['text-color'] ) ) { check_admin_referer( 'custom-header-options', '_wpnonce-custom-header-options' ); $_POST['text-color'] = str_replace( '#', '', $_POST['text-color'] ); if ( 'blank' == $_POST['text-color'] ) { set_theme_mod( 'header_textcolor', 'blank' ); } else { $color = preg_replace('/[^0-9a-fA-F]/', '', $_POST['text-color']); if ( strlen($color) == 6 || strlen($color) == 3 ) set_theme_mod('header_textcolor', $color); } } if ( isset($_POST['default-header']) ) { check_admin_referer( 'custom-header-options', '_wpnonce-custom-header-options' ); $this->process_default_headers(); if ( isset($this->default_headers[$_POST['default-header']]) ) set_theme_mod('header_image', esc_url($this->default_headers[$_POST['default-header']]['url'])); } } /** * Process the default headers * * @since 3.0.0 */ function process_default_headers() { global $_wp_default_headers; if ( !empty($this->headers) ) return; if ( !isset($_wp_default_headers) ) return; $this->default_headers = $_wp_default_headers; foreach ( array_keys($this->default_headers) as $header ) { $this->default_headers[$header]['url'] = sprintf( $this->default_headers[$header]['url'], get_template_directory_uri(), get_stylesheet_directory_uri() ); $this->default_headers[$header]['thumbnail_url'] = sprintf( $this->default_headers[$header]['thumbnail_url'], get_template_directory_uri(), get_stylesheet_directory_uri() ); } } /** * Display UI for selecting one of several default headers. * * @since 3.0.0 */ function show_default_header_selector() { echo '
'; foreach ( $this->default_headers as $header_key => $header ) { $header_thumbnail = $header['thumbnail_url']; $header_url = $header['url']; $header_desc = $header['description']; echo '
'; echo ''; echo '
'; } echo '
'; } /** * Execute Javascript depending on step. * * @since 2.1.0 */ function js() { $step = $this->step(); if ( ( 1 == $step || 3 == $step ) && $this->header_text() ) $this->js_1(); elseif ( 2 == $step ) $this->js_2(); } /** * Display Javascript based on Step 1 and 3. * * @since 2.6.0 */ function js_1() { ?> process_default_headers(); ?>

updated ) ) { ?>

Visit your site to see how it looks.' ), home_url( '/' ) ); ?>

admin_image_div_callback ) { call_user_func( $this->admin_image_div_callback ); } else { ?>
header_text() ) $style = ' style="display:none;"'; else $style = ' style="color:#' . get_theme_mod( 'header_textcolor', HEADER_TEXTCOLOR ) . ';"'; ?>

onclick="return false;" href="">

>


%1$d × %2$d pixels will be used as-is.' ), HEADER_IMAGE_WIDTH, HEADER_IMAGE_HEIGHT ); ?>


default_headers ) ) : ?>

show_default_header_selector(); ?>

header_text() ) : ?>

#blank as text color.' );?>

false); $file = wp_handle_upload($_FILES['import'], $overrides); if ( isset($file['error']) ) wp_die( $file['error'], __( 'Image Upload Error' ) ); $url = $file['url']; $type = $file['type']; $file = $file['file']; $filename = basename($file); // Construct the object array $object = array( 'post_title' => $filename, 'post_content' => $url, 'post_mime_type' => $type, 'guid' => $url, 'context' => 'custom-header'); // Save the data $id = wp_insert_attachment($object, $file); list($width, $height, $type, $attr) = getimagesize( $file ); if ( $width == HEADER_IMAGE_WIDTH && $height == HEADER_IMAGE_HEIGHT ) { // Add the meta-data wp_update_attachment_metadata( $id, wp_generate_attachment_metadata( $id, $file ) ); set_theme_mod('header_image', esc_url($url)); do_action('wp_create_file_in_uploads', $file, $id); // For replication return $this->finished(); } elseif ( $width > HEADER_IMAGE_WIDTH ) { $oitar = $width / HEADER_IMAGE_WIDTH; $image = wp_crop_image($file, 0, 0, $width, $height, HEADER_IMAGE_WIDTH, $height / $oitar, false, str_replace(basename($file), 'midsize-'.basename($file), $file)); if ( is_wp_error( $image ) ) wp_die( __( 'Image could not be processed. Please go back and try again.' ), __( 'Image Processing Error' ) ); $image = apply_filters('wp_create_file_in_uploads', $image, $id); // For replication $url = str_replace(basename($url), basename($image), $url); $width = $width / $oitar; $height = $height / $oitar; } else { $oitar = 1; } ?>

1 ) { $_POST['x1'] = $_POST['x1'] * $_POST['oitar']; $_POST['y1'] = $_POST['y1'] * $_POST['oitar']; $_POST['width'] = $_POST['width'] * $_POST['oitar']; $_POST['height'] = $_POST['height'] * $_POST['oitar']; } $original = get_attached_file( $_POST['attachment_id'] ); $cropped = wp_crop_image($_POST['attachment_id'], $_POST['x1'], $_POST['y1'], $_POST['width'], $_POST['height'], HEADER_IMAGE_WIDTH, HEADER_IMAGE_HEIGHT); if ( is_wp_error( $cropped ) ) wp_die( __( 'Image could not be processed. Please go back and try again.' ), __( 'Image Processing Error' ) ); $cropped = apply_filters('wp_create_file_in_uploads', $cropped, $_POST['attachment_id']); // For replication $parent = get_post($_POST['attachment_id']); $parent_url = $parent->guid; $url = str_replace(basename($parent_url), basename($cropped), $parent_url); // Construct the object array $object = array( 'ID' => $_POST['attachment_id'], 'post_title' => basename($cropped), 'post_content' => $url, 'post_mime_type' => 'image/jpeg', 'guid' => $url, 'context' => 'custom-header' ); // Update the attachment wp_insert_attachment($object, $cropped); wp_update_attachment_metadata( $_POST['attachment_id'], wp_generate_attachment_metadata( $_POST['attachment_id'], $cropped ) ); set_theme_mod('header_image', $url); // cleanup $medium = str_replace(basename($original), 'midsize-'.basename($original), $original); @unlink( apply_filters( 'wp_delete_file', $medium ) ); @unlink( apply_filters( 'wp_delete_file', $original ) ); return $this->finished(); } /** * Display last step of custom header image page. * * @since 2.1.0 */ function finished() { $this->updated = true; $this->step_1(); } /** * Display the page based on the current step. * * @since 2.1.0 */ function admin_page() { if ( ! current_user_can('edit_theme_options') ) wp_die(__('You do not have permission to customize headers.')); $step = $this->step(); if ( 1 == $step ) $this->step_1(); elseif ( 2 == $step ) $this->step_2(); elseif ( 3 == $step ) $this->step_3(); } } ?> wp-admin/edit-comments.php0000644002347300047320000002605011656660271015416 0ustar vonfabpsaclnget_pagenum(); $doaction = $wp_list_table->current_action(); if ( $doaction ) { check_admin_referer( 'bulk-comments' ); if ( 'delete_all' == $doaction && !empty( $_REQUEST['pagegen_timestamp'] ) ) { $comment_status = $wpdb->escape( $_REQUEST['comment_status'] ); $delete_time = $wpdb->escape( $_REQUEST['pagegen_timestamp'] ); $comment_ids = $wpdb->get_col( "SELECT comment_ID FROM $wpdb->comments WHERE comment_approved = '$comment_status' AND '$delete_time' > comment_date_gmt" ); $doaction = 'delete'; } elseif ( isset( $_REQUEST['delete_comments'] ) ) { $comment_ids = $_REQUEST['delete_comments']; $doaction = ( $_REQUEST['action'] != -1 ) ? $_REQUEST['action'] : $_REQUEST['action2']; } elseif ( isset( $_REQUEST['ids'] ) ) { $comment_ids = array_map( 'absint', explode( ',', $_REQUEST['ids'] ) ); } elseif ( wp_get_referer() ) { wp_redirect( wp_get_referer() ); exit; } $approved = $unapproved = $spammed = $unspammed = $trashed = $untrashed = $deleted = 0; $redirect_to = remove_query_arg( array( 'trashed', 'untrashed', 'deleted', 'spammed', 'unspammed', 'approved', 'unapproved', 'ids' ), wp_get_referer() ); $redirect_to = add_query_arg( 'paged', $pagenum, $redirect_to ); foreach ( $comment_ids as $comment_id ) { // Check the permissions on each if ( !current_user_can( 'edit_comment', $comment_id ) ) continue; switch ( $doaction ) { case 'approve' : wp_set_comment_status( $comment_id, 'approve' ); $approved++; break; case 'unapprove' : wp_set_comment_status( $comment_id, 'hold' ); $unapproved++; break; case 'spam' : wp_spam_comment( $comment_id ); $spammed++; break; case 'unspam' : wp_unspam_comment( $comment_id ); $unspammed++; break; case 'trash' : wp_trash_comment( $comment_id ); $trashed++; break; case 'untrash' : wp_untrash_comment( $comment_id ); $untrashed++; break; case 'delete' : wp_delete_comment( $comment_id ); $deleted++; break; } } if ( $approved ) $redirect_to = add_query_arg( 'approved', $approved, $redirect_to ); if ( $unapproved ) $redirect_to = add_query_arg( 'unapproved', $unapproved, $redirect_to ); if ( $spammed ) $redirect_to = add_query_arg( 'spammed', $spammed, $redirect_to ); if ( $unspammed ) $redirect_to = add_query_arg( 'unspammed', $unspammed, $redirect_to ); if ( $trashed ) $redirect_to = add_query_arg( 'trashed', $trashed, $redirect_to ); if ( $untrashed ) $redirect_to = add_query_arg( 'untrashed', $untrashed, $redirect_to ); if ( $deleted ) $redirect_to = add_query_arg( 'deleted', $deleted, $redirect_to ); if ( $trashed || $spammed ) $redirect_to = add_query_arg( 'ids', join( ',', $comment_ids ), $redirect_to ); wp_redirect( $redirect_to ); exit; } elseif ( ! empty( $_GET['_wp_http_referer'] ) ) { wp_redirect( remove_query_arg( array( '_wp_http_referer', '_wpnonce' ), stripslashes( $_SERVER['REQUEST_URI'] ) ) ); exit; } $wp_list_table->prepare_items(); $total_pages = $wp_list_table->get_pagination_arg( 'total_pages' ); if ( $pagenum > $total_pages && $total_pages > 0 ) { wp_redirect( add_query_arg( 'paged', $total_pages ) ); exit; } wp_enqueue_script('admin-comments'); enqueue_comment_hotkeys_js(); if ( $post_id ) $title = sprintf(__('Comments on “%s”'), wp_html_excerpt(_draft_or_post_title($post_id), 50)); else $title = __('Comments'); add_screen_option( 'per_page', array('label' => _x( 'Comments', 'comments per page (screen options)' )) ); add_contextual_help( $current_screen, '

' . __( 'You can manage comments made on your site similar to the way you manage Posts and other content. This screen is customizable in the same ways as other management screens, and you can act on comments using the on-hover action links or the Bulk Actions.' ) . '

' . '

' . __( 'A yellow row means the comment is waiting for you to moderate it.' ) . '

' . '

' . __( 'In the Author column, in addition to the author’s name, email address, and blog URL, the commenter’s IP address is shown. Clicking on this link will show you all the comments made from this IP address.' ) . '

' . '

' . __( 'In the Comment column, above each comment it says “Submitted on,” followed by the date and time the comment was left on your site. Clicking on the date/time link will take you to that comment on your live site.' ) . '

' . '

' . __( 'In the In Response To column, there are three elements. The text is the name of the post that inspired the comment, and links to the post editor for that entry. The “#” permalink symbol below leads to that post on your live site. The small bubble with the number in it shows how many comments that post has received. If the bubble is gray, you have moderated all comments for that post. If it is blue, there are pending comments. Clicking the bubble will filter the comments screen to show only comments on that post.' ) . '

' . '

' . __( 'Many people take advantage of keyboard shortcuts to moderate their comments more quickly. Use the link below to learn more.' ) . '

' . '

' . __( 'For more information:' ) . '

' . '

' . __( 'Documentation on Comments' ) . '

' . '

' . __( 'Documentation on Comment Spam' ) . '

' . '

' . __( 'Documentation on Keyboard Shortcuts' ) . '

' . '

' . __( 'Support Forums' ) . '

' ); require_once('./admin-header.php'); ?>

%s', get_edit_post_link($post_id), wp_html_excerpt(_draft_or_post_title($post_id), 50) ) ); else echo __('Comments'); if ( isset($_REQUEST['s']) && $_REQUEST['s'] ) printf( '' . sprintf( __( 'Search results for “%s”' ), wp_html_excerpt( esc_html( stripslashes( $_REQUEST['s'] ) ), 50 ) ) . '' ); ?>

' . $error_msg . '

'; } if ( isset($_REQUEST['approved']) || isset($_REQUEST['deleted']) || isset($_REQUEST['trashed']) || isset($_REQUEST['untrashed']) || isset($_REQUEST['spammed']) || isset($_REQUEST['unspammed']) || isset($_REQUEST['same']) ) { $approved = isset( $_REQUEST['approved'] ) ? (int) $_REQUEST['approved'] : 0; $deleted = isset( $_REQUEST['deleted'] ) ? (int) $_REQUEST['deleted'] : 0; $trashed = isset( $_REQUEST['trashed'] ) ? (int) $_REQUEST['trashed'] : 0; $untrashed = isset( $_REQUEST['untrashed'] ) ? (int) $_REQUEST['untrashed'] : 0; $spammed = isset( $_REQUEST['spammed'] ) ? (int) $_REQUEST['spammed'] : 0; $unspammed = isset( $_REQUEST['unspammed'] ) ? (int) $_REQUEST['unspammed'] : 0; $same = isset( $_REQUEST['same'] ) ? (int) $_REQUEST['same'] : 0; if ( $approved > 0 || $deleted > 0 || $trashed > 0 || $untrashed > 0 || $spammed > 0 || $unspammed > 0 || $same > 0 ) { if ( $approved > 0 ) $messages[] = sprintf( _n( '%s comment approved', '%s comments approved', $approved ), $approved ); if ( $spammed > 0 ) { $ids = isset($_REQUEST['ids']) ? $_REQUEST['ids'] : 0; $messages[] = sprintf( _n( '%s comment marked as spam.', '%s comments marked as spam.', $spammed ), $spammed ) . ' ' . __('Undo') . '
'; } if ( $unspammed > 0 ) $messages[] = sprintf( _n( '%s comment restored from the spam', '%s comments restored from the spam', $unspammed ), $unspammed ); if ( $trashed > 0 ) { $ids = isset($_REQUEST['ids']) ? $_REQUEST['ids'] : 0; $messages[] = sprintf( _n( '%s comment moved to the Trash.', '%s comments moved to the Trash.', $trashed ), $trashed ) . ' ' . __('Undo') . '
'; } if ( $untrashed > 0 ) $messages[] = sprintf( _n( '%s comment restored from the Trash', '%s comments restored from the Trash', $untrashed ), $untrashed ); if ( $deleted > 0 ) $messages[] = sprintf( _n( '%s comment permanently deleted', '%s comments permanently deleted', $deleted ), $deleted ); if ( $same > 0 && $comment = get_comment( $same ) ) { switch ( $comment->comment_approved ) { case '1' : $messages[] = __('This comment is already approved.') . ' ' . __( 'Edit comment' ) . ''; break; case 'trash' : $messages[] = __( 'This comment is already in the Trash.' ) . ' ' . __( 'View Trash' ) . ''; break; case 'spam' : $messages[] = __( 'This comment is already marked as spam.' ) . ' ' . __( 'Edit comment' ) . ''; break; } } echo '

' . implode( "
\n", $messages ) . '

'; } } ?> views(); ?>
search_box( __( 'Search Comments' ), 'comment' ); ?> display(); ?>
wp-admin/edit-form-advanced.php0000644002347300047320000004420311656660313016274 0ustar vonfabpsacln '', // Unused. Messages start at index 1. 1 => sprintf( __('Post updated. View post'), esc_url( get_permalink($post_ID) ) ), 2 => __('Custom field updated.'), 3 => __('Custom field deleted.'), 4 => __('Post updated.'), /* translators: %s: date and time of the revision */ 5 => isset($_GET['revision']) ? sprintf( __('Post restored to revision from %s'), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false, 6 => sprintf( __('Post published. View post'), esc_url( get_permalink($post_ID) ) ), 7 => __('Post saved.'), 8 => sprintf( __('Post submitted. Preview post'), esc_url( add_query_arg( 'preview', 'true', get_permalink($post_ID) ) ) ), 9 => sprintf( __('Post scheduled for: %1$s. Preview post'), // translators: Publish box date format, see http://php.net/date date_i18n( __( 'M j, Y @ G:i' ), strtotime( $post->post_date ) ), esc_url( get_permalink($post_ID) ) ), 10 => sprintf( __('Post draft updated. Preview post'), esc_url( add_query_arg( 'preview', 'true', get_permalink($post_ID) ) ) ), ); $messages['page'] = array( 0 => '', // Unused. Messages start at index 1. 1 => sprintf( __('Page updated. View page'), esc_url( get_permalink($post_ID) ) ), 2 => __('Custom field updated.'), 3 => __('Custom field deleted.'), 4 => __('Page updated.'), 5 => isset($_GET['revision']) ? sprintf( __('Page restored to revision from %s'), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false, 6 => sprintf( __('Page published. View page'), esc_url( get_permalink($post_ID) ) ), 7 => __('Page saved.'), 8 => sprintf( __('Page submitted. Preview page'), esc_url( add_query_arg( 'preview', 'true', get_permalink($post_ID) ) ) ), 9 => sprintf( __('Page scheduled for: %1$s. Preview page'), date_i18n( __( 'M j, Y @ G:i' ), strtotime( $post->post_date ) ), esc_url( get_permalink($post_ID) ) ), 10 => sprintf( __('Page draft updated. Preview page'), esc_url( add_query_arg( 'preview', 'true', get_permalink($post_ID) ) ) ), ); $messages = apply_filters( 'post_updated_messages', $messages ); $message = false; if ( isset($_GET['message']) ) { $_GET['message'] = absint( $_GET['message'] ); if ( isset($messages[$post_type][$_GET['message']]) ) $message = $messages[$post_type][$_GET['message']]; elseif ( !isset($messages[$post_type]) && isset($messages['post'][$_GET['message']]) ) $message = $messages['post'][$_GET['message']]; } $notice = false; $form_extra = ''; if ( 'auto-draft' == $post->post_status ) { if ( 'edit' == $action ) $post->post_title = ''; $autosave = false; $form_extra .= ""; } else { $autosave = wp_get_post_autosave( $post_ID ); } $form_action = 'editpost'; $nonce_action = 'update-' . $post_type . '_' . $post_ID; $form_extra .= ""; // Detect if there exists an autosave newer than the post and if that autosave is different than the post if ( $autosave && mysql2date( 'U', $autosave->post_modified_gmt, false ) > mysql2date( 'U', $post->post_modified_gmt, false ) ) { foreach ( _wp_post_revision_fields() as $autosave_field => $_autosave_field ) { if ( normalize_whitespace( $autosave->$autosave_field ) != normalize_whitespace( $post->$autosave_field ) ) { $notice = sprintf( __( 'There is an autosave of this post that is more recent than the version below. View the autosave' ), get_edit_post_link( $autosave->ID ) ); break; } } unset($autosave_field, $_autosave_field); } $post_type_object = get_post_type_object($post_type); // All meta boxes should be defined and added before the first do_meta_boxes() call (or potentially during the do_meta_boxes action). require_once('./includes/meta-boxes.php'); add_meta_box('submitdiv', __('Publish'), 'post_submit_meta_box', $post_type, 'side', 'core'); if ( current_theme_supports( 'post-formats' ) && post_type_supports( $post_type, 'post-formats' ) ) add_meta_box( 'formatdiv', _x( 'Format', 'post format' ), 'post_format_meta_box', $post_type, 'side', 'core' ); // all taxonomies foreach ( get_object_taxonomies($post_type) as $tax_name ) { $taxonomy = get_taxonomy($tax_name); if ( ! $taxonomy->show_ui ) continue; $label = $taxonomy->labels->name; if ( !is_taxonomy_hierarchical($tax_name) ) add_meta_box('tagsdiv-' . $tax_name, $label, 'post_tags_meta_box', $post_type, 'side', 'core', array( 'taxonomy' => $tax_name )); else add_meta_box($tax_name . 'div', $label, 'post_categories_meta_box', $post_type, 'side', 'core', array( 'taxonomy' => $tax_name )); } if ( post_type_supports($post_type, 'page-attributes') ) add_meta_box('pageparentdiv', 'page' == $post_type ? __('Page Attributes') : __('Attributes'), 'page_attributes_meta_box', $post_type, 'side', 'core'); if ( current_theme_supports( 'post-thumbnails', $post_type ) && post_type_supports( $post_type, 'thumbnail' ) && ( ! is_multisite() || ( ( $mu_media_buttons = get_site_option( 'mu_media_buttons', array() ) ) && ! empty( $mu_media_buttons['image'] ) ) ) ) add_meta_box('postimagediv', __('Featured Image'), 'post_thumbnail_meta_box', $post_type, 'side', 'low'); if ( post_type_supports($post_type, 'excerpt') ) add_meta_box('postexcerpt', __('Excerpt'), 'post_excerpt_meta_box', $post_type, 'normal', 'core'); if ( post_type_supports($post_type, 'trackbacks') ) add_meta_box('trackbacksdiv', __('Send Trackbacks'), 'post_trackback_meta_box', $post_type, 'normal', 'core'); if ( post_type_supports($post_type, 'custom-fields') ) add_meta_box('postcustom', __('Custom Fields'), 'post_custom_meta_box', $post_type, 'normal', 'core'); do_action('dbx_post_advanced'); if ( post_type_supports($post_type, 'comments') ) add_meta_box('commentstatusdiv', __('Discussion'), 'post_comment_status_meta_box', $post_type, 'normal', 'core'); if ( ('publish' == $post->post_status || 'private' == $post->post_status) && post_type_supports($post_type, 'comments') ) add_meta_box('commentsdiv', __('Comments'), 'post_comment_meta_box', $post_type, 'normal', 'core'); if ( !( 'pending' == $post->post_status && !current_user_can( $post_type_object->cap->publish_posts ) ) ) add_meta_box('slugdiv', __('Slug'), 'post_slug_meta_box', $post_type, 'normal', 'core'); if ( post_type_supports($post_type, 'author') ) { if ( is_super_admin() || current_user_can( $post_type_object->cap->edit_others_posts ) ) add_meta_box('authordiv', __('Author'), 'post_author_meta_box', $post_type, 'normal', 'core'); } if ( post_type_supports($post_type, 'revisions') && 0 < $post_ID && wp_get_post_revisions( $post_ID ) ) add_meta_box('revisionsdiv', __('Revisions'), 'post_revisions_meta_box', $post_type, 'normal', 'core'); do_action('add_meta_boxes', $post_type, $post); do_action('add_meta_boxes_' . $post_type, $post); do_action('do_meta_boxes', $post_type, 'normal', $post); do_action('do_meta_boxes', $post_type, 'advanced', $post); do_action('do_meta_boxes', $post_type, 'side', $post); add_screen_option('layout_columns', array('max' => 2) ); if ( 'post' == $post_type ) { add_contextual_help($current_screen, '

' . __('The title field and the big Post Editing Area are fixed in place, but you can reposition all the other boxes using drag and drop, and can minimize or expand them by clicking the title bar of the box. Use the Screen Options tab to unhide more boxes (Excerpt, Send Trackbacks, Custom Fields, Discussion, Slug, Author) or to choose a 1- or 2-column layout for this screen.') . '

' . '

' . __('Title - Enter a title for your post. After you enter a title, you’ll see the permalink below, which you can edit.') . '

' . '

' . __('Post editor - Enter the text for your post. There are two modes of editing: Visual and HTML. Choose the mode by clicking on the appropriate tab. Visual mode gives you a WYSIWYG editor. Click the last icon in the row to get a second row of controls. The screen icon just before that allows you to expand the edit box to full screen. The HTML mode allows you to enter raw HTML along with your post text. You can insert media files by clicking the icons above the post editor and following the directions.') . '

' . '

' . __('Publish - You can set the terms of publishing your post in the Publish box. For Status, Visibility, and Publish (immediately), click on the Edit link to reveal more options. Visibility includes options for password-protecting a post or making it stay at the top of your blog indefinitely (sticky). Publish (immediately) allows you to set a future or past date and time, so you can schedule a post to be published in the future or backdate a post.') . '

' . ( ( current_theme_supports( 'post-formats' ) && post_type_supports( 'post', 'post-formats' ) ) ? '

' . __( 'Post Format - This designates how your theme will display a specific post. For example, you could have a standard blog post with a title and paragraphs, or a short aside that omits the title and contains a short text blurb. Please refer to the Codex for descriptions of each post format.' ) . '

' : '' ) . '

' . __('Featured Image - This allows you to associate an image with your post without inserting it. This is usually useful only if your theme makes use of the featured image as a post thumbnail on the home page, a custom header, etc.') . '

' . '

' . __('Send Trackbacks - Trackbacks are a way to notify legacy blog systems that you’ve linked to them. Enter the URL(s) you want to send trackbacks. If you link to other WordPress sites they’ll be notified automatically using pingbacks, and this field is unnecessary.') . '

' . '

' . __('Discussion - You can turn comments and pings on or off, and if there are comments on the post, you can see them here and moderate them.') . '

' . '

' . sprintf(__('You can also create posts with the Press This bookmarklet.'), 'options-writing.php') . '

' . '

' . __('For more information:') . '

' . '

' . __('Documentation on Writing and Editing Posts') . '

' . '

' . __('Support Forums') . '

' ); } elseif ( 'page' == $post_type ) { add_contextual_help($current_screen, '

' . __('Pages are similar to Posts in that they have a title, body text, and associated metadata, but they are different in that they are not part of the chronological blog stream, kind of like permanent posts. Pages are not categorized or tagged, but can have a hierarchy. You can nest Pages under other Pages by making one the “Parent” of the other, creating a group of Pages.') . '

' . '

' . __('Creating a Page is very similar to creating a Post, and the screens can be customized in the same way using drag and drop, the Screen Options tab, and expanding/collapsing boxes as you choose. The Page editor mostly works the same Post editor, but there are some Page-specific features in the Page Attributes box:') . '

' . '

' . __('Parent - You can arrange your pages in hierarchies. For example, you could have an “About” page that has “Life Story” and “My Dog” pages under it. There are no limits to how many levels you can nest pages.') . '

' . '

' . __('Template - Some themes have custom templates you can use for certain pages that might have additional features or custom layouts. If so, you’ll see them in this dropdown menu.') . '

' . '

' . __('Order - Pages are usually ordered alphabetically, but you can choose your own order by entering a number (1 for first, etc.) in this field.') . '

' . '

' . __('For more information:') . '

' . '

' . __('Documentation on Adding New Pages') . '

' . '

' . __('Documentation on Editing Pages') . '

' . '

' . __('Support Forums') . '

' ); } require_once('./admin-header.php'); ?>

> post_status ) wp_original_referer_field(true, 'previous'); echo $form_extra; wp_nonce_field( 'autosave', 'autosavenonce', false ); wp_nonce_field( 'meta-box-order', 'meta-box-order-nonce', false ); wp_nonce_field( 'closedpostboxes', 'closedpostboxesnonce', false ); ?>
publicly_queryable ) ? get_sample_permalink_html($post->ID) : ''; $shortlink = wp_get_shortlink($post->ID, 'post'); if ( !empty($shortlink) ) $sample_permalink_html .= '' . __('Get Shortlink') . ''; if ( ! empty( $post_type_object->publicly_queryable ) && ! ( 'pending' == $post->post_status && !current_user_can( $post_type_object->cap->publish_posts ) ) ) { ?>
ID) && ! empty($sample_permalink_html) && 'auto-draft' != $post->post_status ) echo $sample_permalink_html; ?>
post_content); ?>
  post_status ) { echo ''; if ( $last_id = get_post_meta($post_ID, '_edit_last', true) ) { $last_user = get_userdata($last_id); printf(__('Last edited by %1$s on %2$s at %3$s'), esc_html( $last_user->display_name ), mysql2date(get_option('date_format'), $post->post_modified), mysql2date(get_option('time_format'), $post->post_modified)); } else { printf(__('Last edited on %1$s at %2$s'), mysql2date(get_option('date_format'), $post->post_modified), mysql2date(get_option('time_format'), $post->post_modified)); } echo ''; } ?>

post_title) && '' == $post->post_title) || (isset($_GET['message']) && 2 > $_GET['message'])) : ?> wp-admin/edit-form-comment.php0000644002347300047320000001342111656660312016166 0ustar vonfabpsaclncomment_ID); $form_action = 'editedcomment'; $form_extra = "' />\n\ncomment_ID) ?>



%1$s'); $date = date_i18n( $datef, strtotime( $comment->comment_date ) ); ?>  
comment_ID&_wp_original_http_referer=" . urlencode(wp_get_referer()), 'delete-comment_' . $comment->comment_ID) . "'>" . ( !EMPTY_TRASH_DAYS ? __('Delete Permanently') : __('Move to Trash') ) . "\n"; ?>
'4' ) ); ?>

comment_author_email ) { printf( __( 'E-mail (%s):' ), get_comment_author_email_link( __( 'send e-mail' ), '', '' ) ); } else { _e( 'E-mail:' ); } ?>
comment_author_url ) && 'http://' != $comment->comment_author_url ) { $link = '' . __('visit site') . ''; printf( __( 'URL (%s):' ), apply_filters('get_comment_author_link', $link ) ); } else { _e( 'URL:' ); } ?>

comment_content, 'content', 'newcomment_author_url', false, 4); ?>
wp-admin/edit-link-form.php0000644002347300047320000001221311656660313015460 0ustar vonfabpsaclnLinks / Edit Link' ), 'link-manager.php' ); $submit_text = __('Update Link'); $form = ' wp-admin/edit-tag-form.php0000644002347300047320000000776111656660313015312 0ustar vonfabpsacln

labels->edit_item; ?>

0, 'hide_if_empty' => false, 'name' => 'parent', 'orderby' => 'name', 'taxonomy' => $taxonomy, 'selected' => $tag->parent, 'exclude_tree' => $tag->term_id, 'hierarchical' => true, 'show_option_none' => __('None'))); ?>

wp-admin/edit-tags.php0000644002347300047320000003501611656660314014527 0ustar vonfabpsaclncap->manage_terms ) ) wp_die( __( 'Cheatin’ uh?' ) ); $wp_list_table = _get_list_table('WP_Terms_List_Table'); $pagenum = $wp_list_table->get_pagenum(); $title = $tax->labels->name; if ( 'post' != $post_type ) { $parent_file = "edit.php?post_type=$post_type"; $submenu_file = "edit-tags.php?taxonomy=$taxonomy&post_type=$post_type"; } else if ( 'link_category' == $tax->name ) { $parent_file = 'link-manager.php'; $submenu_file = 'edit-tags.php?taxonomy=link_category'; } else { $parent_file = 'edit.php'; $submenu_file = "edit-tags.php?taxonomy=$taxonomy"; } add_screen_option( 'per_page', array('label' => $title, 'default' => 20, 'option' => 'edit_' . $tax->name . '_per_page') ); switch ( $wp_list_table->current_action() ) { case 'add-tag': check_admin_referer( 'add-tag' ); if ( !current_user_can( $tax->cap->edit_terms ) ) wp_die( __( 'Cheatin’ uh?' ) ); $ret = wp_insert_term( $_POST['tag-name'], $taxonomy, $_POST ); $location = 'edit-tags.php?taxonomy=' . $taxonomy; if ( 'post' != $post_type ) $location .= '&post_type=' . $post_type; if ( $referer = wp_get_original_referer() ) { if ( false !== strpos( $referer, 'edit-tags.php' ) ) $location = $referer; } if ( $ret && !is_wp_error( $ret ) ) $location = add_query_arg( 'message', 1, $location ); else $location = add_query_arg( 'message', 4, $location ); wp_redirect( $location ); exit; break; case 'delete': $location = 'edit-tags.php?taxonomy=' . $taxonomy; if ( 'post' != $post_type ) $location .= '&post_type=' . $post_type; if ( $referer = wp_get_referer() ) { if ( false !== strpos( $referer, 'edit-tags.php' ) ) $location = $referer; } if ( !isset( $_REQUEST['tag_ID'] ) ) { wp_redirect( $location ); exit; } $tag_ID = (int) $_REQUEST['tag_ID']; check_admin_referer( 'delete-tag_' . $tag_ID ); if ( !current_user_can( $tax->cap->delete_terms ) ) wp_die( __( 'Cheatin’ uh?' ) ); wp_delete_term( $tag_ID, $taxonomy ); $location = add_query_arg( 'message', 2, $location ); wp_redirect( $location ); exit; break; case 'bulk-delete': check_admin_referer( 'bulk-tags' ); if ( !current_user_can( $tax->cap->delete_terms ) ) wp_die( __( 'Cheatin’ uh?' ) ); $tags = (array) $_REQUEST['delete_tags']; foreach ( $tags as $tag_ID ) { wp_delete_term( $tag_ID, $taxonomy ); } $location = 'edit-tags.php?taxonomy=' . $taxonomy; if ( 'post' != $post_type ) $location .= '&post_type=' . $post_type; if ( $referer = wp_get_referer() ) { if ( false !== strpos( $referer, 'edit-tags.php' ) ) $location = $referer; } $location = add_query_arg( 'message', 6, $location ); wp_redirect( $location ); exit; break; case 'edit': $title = $tax->labels->edit_item; require_once ( 'admin-header.php' ); $tag_ID = (int) $_REQUEST['tag_ID']; $tag = get_term( $tag_ID, $taxonomy, OBJECT, 'edit' ); include( './edit-tag-form.php' ); break; case 'editedtag': $tag_ID = (int) $_POST['tag_ID']; check_admin_referer( 'update-tag_' . $tag_ID ); if ( !current_user_can( $tax->cap->edit_terms ) ) wp_die( __( 'Cheatin’ uh?' ) ); $ret = wp_update_term( $tag_ID, $taxonomy, $_POST ); $location = 'edit-tags.php?taxonomy=' . $taxonomy; if ( 'post' != $post_type ) $location .= '&post_type=' . $post_type; if ( $referer = wp_get_original_referer() ) { if ( false !== strpos( $referer, 'edit-tags.php' ) ) $location = $referer; } if ( $ret && !is_wp_error( $ret ) ) $location = add_query_arg( 'message', 3, $location ); else $location = add_query_arg( 'message', 5, $location ); wp_redirect( $location ); exit; break; default: if ( ! empty($_REQUEST['_wp_http_referer']) ) { $location = remove_query_arg( array('_wp_http_referer', '_wpnonce'), stripslashes($_SERVER['REQUEST_URI']) ); if ( ! empty( $_REQUEST['paged'] ) ) $location = add_query_arg( 'paged', (int) $_REQUEST['paged'] ); wp_redirect( $location ); exit; } $wp_list_table->prepare_items(); $total_pages = $wp_list_table->get_pagination_arg( 'total_pages' ); if ( $pagenum > $total_pages && $total_pages > 0 ) { wp_redirect( add_query_arg( 'paged', $total_pages ) ); exit; } wp_enqueue_script('admin-tags'); if ( current_user_can($tax->cap->edit_terms) ) wp_enqueue_script('inline-edit-tax'); if ( 'category' == $taxonomy || 'link_category' == $taxonomy || 'post_tag' == $taxonomy ) { $help =''; if ( 'category' == $taxonomy ) $help = '

' . sprintf(__( 'You can use categories to define sections of your site and group related posts. The default category is “Uncategorized” until you change it in your writing settings.' ) , 'options-writing.php' ) . '

'; elseif ( 'link_category' == $taxonomy ) $help = '

' . __( 'You can create groups of links by using link categories. Link category names must be unique and link categories are separate from the categories you use for posts.' ) . '

'; else $help = '

' . __( 'You can assign keywords to your posts using Post Tags. Unlike categories, tags have no hierarchy, meaning there’s no relationship from one tag to another.' ) . '

'; if ( 'link_category' == $taxonomy ) $help .= '

' . __( 'You can delete link categories in the Bulk Action pulldown, but that action does not delete the links within the category. Instead, it moves them to the default link category.' ) . '

'; else $help .='

' . __( 'What’s the difference between categories and tags? Normally, tags are ad-hoc keywords that identify important information in your post (names, subjects, etc) that may or may not recur in other posts, while categories are pre-determined sections. If you think of your site like a book, the categories are like the Table of Contents and the tags are like the terms in the index.' ) . '

'; if ( 'category' == $taxonomy ) $help .= '

' . __( 'When adding a new category on this screen, you’ll fill in the following fields:' ) . '

'; elseif ( 'post_tag' == $taxonomy ) $help .= '

' . __( 'When adding a new tag on this screen, you’ll fill in the following fields:' ) . '

'; if ( 'category' == $taxonomy || 'post_tag' == $taxonomy ) $help .= '
    ' . '
  • ' . __( 'Name - The name is how it appears on your site.' ) . '
  • '; if ( ! global_terms_enabled() ) if ( 'category' == $taxonomy || 'post_tag' == $taxonomy ) $help .= '
  • ' . __( 'Slug - The “slug” is the URL-friendly version of the name. It is usually all lowercase and contains only letters, numbers, and hyphens.' ) . '
  • '; if ( 'category' == $taxonomy ) $help .= '
  • ' . __( 'Parent - Categories, unlike tags, can have a hierarchy. You might have a Jazz category, and under that have children categories for Bebop and Big Band. Totally optional. To create a subcategory, just choose another category from the Parent dropdown.' ) . '
  • '; if ( 'category' == $taxonomy || 'post_tag' == $taxonomy ) $help .= '
  • ' . __( 'Description - The description is not prominent by default; however, some themes may display it.' ) . '
  • ' . '
' . '

' . __( 'You can change the display of this screen using the Screen Options tab to set how many items are displayed per screen and to display/hide columns in the table.' ) . '

' . '

' . __( 'For more information:' ) . '

'; if ( 'category' == $taxonomy ) $help .= '

' . __( 'Documentation on Categories' ) . '

'; elseif ( 'link_category' == $taxonomy ) $help .= '

' . __( 'Documentation on Link Categories' ) . '

'; else $help .= '

' . __( 'Documentation on Post Tags' ) . '

'; $help .= '

' . __('Support Forums') . '

'; add_contextual_help($current_screen, $help); unset($help); } require_once ('admin-header.php'); if ( !current_user_can($tax->cap->edit_terms) ) wp_die( __('You are not allowed to edit this item.') ); $messages[1] = __('Item added.'); $messages[2] = __('Item deleted.'); $messages[3] = __('Item updated.'); $messages[4] = __('Item not added.'); $messages[5] = __('Item not updated.'); $messages[6] = __('Items deleted.'); ?>

' . __('Search results for “%s”') . '', esc_html( stripslashes($_REQUEST['s']) ) ); ?>

search_box( $tax->labels->search_items, 'tag' ); ?>

display(); ?>

Note:
Deleting a category does not delete the posts in that category. Instead, posts that were only assigned to the deleted category are set to the category %s.'), apply_filters('the_category', get_cat_name(get_option('default_category')))) ?>

category to tag converter.'), 'import.php') ?>

tag to category converter'), 'import.php') ;?>.

labels->popular_items ) ) { if ( current_user_can( $tax->cap->edit_terms ) ) $tag_cloud = wp_tag_cloud( array( 'taxonomy' => $taxonomy, 'echo' => false, 'link' => 'edit' ) ); else $tag_cloud = wp_tag_cloud( array( 'taxonomy' => $taxonomy, 'echo' => false ) ); if ( $tag_cloud ) : ?>

labels->popular_items; ?>

cap->edit_terms) ) { // Back compat hooks. Deprecated in preference to {$taxonomy}_pre_add_form if ( 'category' == $taxonomy ) do_action('add_category_form_pre', (object)array('parent' => 0) ); elseif ( 'link_category' == $taxonomy ) do_action('add_link_category_form_pre', (object)array('parent' => 0) ); else do_action('add_tag_form_pre', $taxonomy); do_action($taxonomy . '_pre_add_form', $taxonomy); ?>

labels->add_new_item; ?>

0, 'hide_if_empty' => false, 'taxonomy' => $taxonomy, 'name' => 'parent', 'orderby' => 'name', 'hierarchical' => true, 'show_option_none' => __('None'))); ?>

labels->add_new_item, 'button' ); // Back compat hooks. Deprecated in preference to {$taxonomy}_add_form if ( 'category' == $taxonomy ) do_action('edit_category_form', (object)array('parent' => 0) ); elseif ( 'link_category' == $taxonomy ) do_action('edit_link_category_form', (object)array('parent' => 0) ); else do_action('add_tag_form', $taxonomy); do_action($taxonomy . '_add_form', $taxonomy); ?>
inline_edit(); ?> wp-admin/edit.php0000644002347300047320000003015511656660314013572 0ustar vonfabpsacln true ) ) ) ) $post_type = $_GET['post_type']; else wp_die( __('Invalid post type') ); $_GET['post_type'] = $post_type; $post_type_object = get_post_type_object( $post_type ); if ( !current_user_can($post_type_object->cap->edit_posts) ) wp_die(__('Cheatin’ uh?')); $wp_list_table = _get_list_table('WP_Posts_List_Table'); $pagenum = $wp_list_table->get_pagenum(); // Back-compat for viewing comments of an entry foreach ( array( 'p', 'attachment_id', 'page_id' ) as $_redirect ) { if ( ! empty( $_REQUEST[ $_redirect ] ) ) { wp_redirect( admin_url( 'edit-comments.php?p=' . absint( $_REQUEST[ $_redirect ] ) ) ); exit; } } unset( $_redirect ); if ( 'post' != $post_type ) { $parent_file = "edit.php?post_type=$post_type"; $submenu_file = "edit.php?post_type=$post_type"; $post_new_file = "post-new.php?post_type=$post_type"; } else { $parent_file = 'edit.php'; $submenu_file = 'edit.php'; $post_new_file = 'post-new.php'; } $doaction = $wp_list_table->current_action(); if ( $doaction ) { check_admin_referer('bulk-posts'); $sendback = remove_query_arg( array('trashed', 'untrashed', 'deleted', 'ids'), wp_get_referer() ); $sendback = add_query_arg( 'paged', $pagenum, $sendback ); if ( strpos($sendback, 'post.php') !== false ) $sendback = admin_url($post_new_file); if ( 'delete_all' == $doaction ) { $post_status = preg_replace('/[^a-z0-9_-]+/i', '', $_REQUEST['post_status']); if ( get_post_status_object($post_status) ) // Check the post status exists first $post_ids = $wpdb->get_col( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_type=%s AND post_status = %s", $post_type, $post_status ) ); $doaction = 'delete'; } elseif ( isset( $_REQUEST['media'] ) ) { $post_ids = $_REQUEST['media']; } elseif ( isset( $_REQUEST['ids'] ) ) { $post_ids = explode( ',', $_REQUEST['ids'] ); } elseif ( !empty( $_REQUEST['post'] ) ) { $post_ids = array_map('intval', $_REQUEST['post']); } if ( !isset( $post_ids ) ) { wp_redirect( $sendback ); exit; } switch ( $doaction ) { case 'trash': $trashed = 0; foreach( (array) $post_ids as $post_id ) { if ( !current_user_can($post_type_object->cap->delete_post, $post_id) ) wp_die( __('You are not allowed to move this item to the Trash.') ); if ( !wp_trash_post($post_id) ) wp_die( __('Error in moving to Trash.') ); $trashed++; } $sendback = add_query_arg( array('trashed' => $trashed, 'ids' => join(',', $post_ids) ), $sendback ); break; case 'untrash': $untrashed = 0; foreach( (array) $post_ids as $post_id ) { if ( !current_user_can($post_type_object->cap->delete_post, $post_id) ) wp_die( __('You are not allowed to restore this item from the Trash.') ); if ( !wp_untrash_post($post_id) ) wp_die( __('Error in restoring from Trash.') ); $untrashed++; } $sendback = add_query_arg('untrashed', $untrashed, $sendback); break; case 'delete': $deleted = 0; foreach( (array) $post_ids as $post_id ) { $post_del = & get_post($post_id); if ( !current_user_can($post_type_object->cap->delete_post, $post_id) ) wp_die( __('You are not allowed to delete this item.') ); if ( $post_del->post_type == 'attachment' ) { if ( ! wp_delete_attachment($post_id) ) wp_die( __('Error in deleting...') ); } else { if ( !wp_delete_post($post_id) ) wp_die( __('Error in deleting...') ); } $deleted++; } $sendback = add_query_arg('deleted', $deleted, $sendback); break; case 'edit': $done = bulk_edit_posts($_REQUEST); if ( is_array($done) ) { $done['updated'] = count( $done['updated'] ); $done['skipped'] = count( $done['skipped'] ); $done['locked'] = count( $done['locked'] ); $sendback = add_query_arg( $done, $sendback ); } break; } $sendback = remove_query_arg( array('action', 'action2', 'tags_input', 'post_author', 'comment_status', 'ping_status', '_status', 'post', 'bulk_edit', 'post_view'), $sendback ); wp_redirect($sendback); exit(); } elseif ( ! empty($_REQUEST['_wp_http_referer']) ) { wp_redirect( remove_query_arg( array('_wp_http_referer', '_wpnonce'), stripslashes($_SERVER['REQUEST_URI']) ) ); exit; } $wp_list_table->prepare_items(); $total_pages = $wp_list_table->get_pagination_arg( 'total_pages' ); if ( $pagenum > $total_pages && $total_pages > 0 ) { wp_redirect( add_query_arg( 'paged', $total_pages ) ); exit; } wp_enqueue_script('inline-edit-post'); $title = $post_type_object->labels->name; if ( 'post' == $post_type ) { add_contextual_help($current_screen, '

' . __('You can customize the display of this screen in a number of ways:') . '

' . '
    ' . '
  • ' . __('You can hide/display columns based on your needs and decide how many posts to list per screen using the Screen Options tab.') . '
  • ' . '
  • ' . __('You can filter the list of posts by post status using the text links in the upper left to show All, Published, Draft, or Trashed posts. The default view is to show all posts.') . '
  • ' . '
  • ' . __('You can view posts in a simple title list or with an excerpt. Choose the view you prefer by clicking on the icons at the top of the list on the right.') . '
  • ' . '
  • ' . __('You can refine the list to show only posts in a specific category or from a specific month by using the dropdown menus above the posts list. Click the Filter button after making your selection. You also can refine the list by clicking on the post author, category or tag in the posts list.') . '
  • ' . '
' . '

' . __('Hovering over a row in the posts list will display action links that allow you to manage your post. You can perform the following actions:') . '

' . '
    ' . '
  • ' . __('Edit takes you to the editing screen for that post. You can also reach that screen by clicking on the post title.') . '
  • ' . '
  • ' . __('Quick Edit provides inline access to the metadata of your post, allowing you to update post details without leaving this screen.') . '
  • ' . '
  • ' . __('Trash removes your post from this list and places it in the trash, from which you can permanently delete it.') . '
  • ' . '
  • ' . __('Preview will show you what your draft post will look like if you publish it. View will take you to your live site to view the post. Which link is available depends on your post’s status.') . '
  • ' . '
' . '

' . __('You can also edit multiple posts at once. Select the posts you want to edit using the checkboxes, select Edit from the Bulk Actions menu and click Apply. You will be able to change the metadata (categories, author, etc.) for all selected posts at once. To remove a post from the grouping, just click the x next to its name in the Bulk Edit area that appears.') . '

' . '

' . __('For more information:') . '

' . '

' . __('Documentation on Managing Posts') . '

' . '

' . __('Support Forums') . '

' ); } elseif ( 'page' == $post_type ) { add_contextual_help($current_screen, '

' . __('Pages are similar to Posts in that they have a title, body text, and associated metadata, but they are different in that they are not part of the chronological blog stream, kind of like permanent posts. Pages are not categorized or tagged, but can have a hierarchy. You can nest Pages under other Pages by making one the “Parent” of the other, creating a group of Pages.') . '

' . '

' . __('Managing Pages is very similar to managing Posts, and the screens can be customized in the same way.') . '

' . '

' . __('You can also perform the same types of actions, including narrowing the list by using the filters, acting on a Page using the action links that appear when you hover over a row, or using the Bulk Actions menu to edit the metadata for multiple Pages at once.') . '

' . '

' . __('For more information:') . '

' . '

' . __('Documentation on Managing Pages') . '

' . '

' . __('Support Forums') . '

' ); } add_screen_option( 'per_page', array('label' => $title, 'default' => 20) ); require_once('./admin-header.php'); ?>

labels->name ); ?> labels->add_new); ?> ' . __('Search results for “%s”') . '', get_search_query() ); ?>

|

' . __('Undo') . '
'; unset($_REQUEST['trashed']); } if ( isset($_REQUEST['untrashed']) && (int) $_REQUEST['untrashed'] ) { printf( _n( 'Item restored from the Trash.', '%s items restored from the Trash.', $_REQUEST['untrashed'] ), number_format_i18n( $_REQUEST['untrashed'] ) ); unset($_REQUEST['undeleted']); } $_SERVER['REQUEST_URI'] = remove_query_arg( array('locked', 'skipped', 'updated', 'deleted', 'trashed', 'untrashed'), $_SERVER['REQUEST_URI'] ); ?>

views(); ?>
search_box( $post_type_object->labels->search_items, 'post' ); ?> display(); ?>
has_items() ) $wp_list_table->inline_edit(); ?>

' . __('You can export a file of your site’s content in order to import it into another installation or platform. The export file will be an XML file format called WXR. Posts, pages, comments, custom fields, categories, and tags can be included. You can choose for the WXR file to include only certain posts or pages by setting the dropdown filters to limit the export by category, author, date range by month, or publishing status.') . '

' . '

' . __('Once generated, your WXR file can be imported by another WordPress site or by another blogging platform able to access this format.') . '

' . '

' . __('For more information:') . '

' . '

' . __('Documentation on Export') . '

' . '

' . __('Support Forums') . '

' ); if ( isset( $_GET['download'] ) ) { $args = array(); if ( ! isset( $_GET['content'] ) || 'all' == $_GET['content'] ) { $args['content'] = 'all'; } else if ( 'posts' == $_GET['content'] ) { $args['content'] = 'post'; if ( $_GET['cat'] ) $args['category'] = (int) $_GET['cat']; if ( $_GET['post_author'] ) $args['author'] = (int) $_GET['post_author']; if ( $_GET['post_start_date'] || $_GET['post_end_date'] ) { $args['start_date'] = $_GET['post_start_date']; $args['end_date'] = $_GET['post_end_date']; } if ( $_GET['post_status'] ) $args['status'] = $_GET['post_status']; } else if ( 'pages' == $_GET['content'] ) { $args['content'] = 'page'; if ( $_GET['page_author'] ) $args['author'] = (int) $_GET['page_author']; if ( $_GET['page_start_date'] || $_GET['page_end_date'] ) { $args['start_date'] = $_GET['page_start_date']; $args['end_date'] = $_GET['page_end_date']; } if ( $_GET['page_status'] ) $args['status'] = $_GET['page_status']; } else { $args['content'] = $_GET['content']; } export_wp( $args ); die(); } require_once ('admin-header.php'); function export_date_options() { global $wpdb, $wp_locale; $months = $wpdb->get_results( " SELECT DISTINCT YEAR( post_date ) AS year, MONTH( post_date ) AS month FROM $wpdb->posts WHERE post_type = 'post' AND post_status != 'auto-draft' ORDER BY post_date DESC " ); $month_count = count( $months ); if ( !$month_count || ( 1 == $month_count && 0 == $months[0]->month ) ) return; foreach ( $months as $date ) { if ( 0 == $date->year ) continue; $month = zeroise( $date->month, 2 ); echo ''; } } ?>

  • __('All') ) ); ?>
  • get_col( "SELECT DISTINCT post_author FROM {$wpdb->posts} WHERE post_type = 'post'" ); wp_dropdown_users( array( 'include' => $authors, 'name' => 'post_author', 'multi' => true, 'show_option_all' => __('All') ) ); ?>

  • get_col( "SELECT DISTINCT post_author FROM {$wpdb->posts} WHERE post_type = 'page'" ); wp_dropdown_users( array( 'include' => $authors, 'name' => 'page_author', 'multi' => true, 'show_option_all' => __('All') ) ); ?>
false, 'can_export' => true ), 'objects' ) as $post_type ) : ?>

wp-admin/gears-manifest.php0000644002347300047320000000251011656660314015544 0ustar vonfabpsacln { "betaManifestVersion" : 1, "version" : "", "entries" : [ ]} wp-admin/images/0000755002347300047320000000000011656660337013402 5ustar vonfabpsaclnwp-admin/images/align-center.png0000644002347300047320000000107311656660316016456 0ustar vonfabpsaclnPNG  IHDR8< pHYs  IDAT(OkAūkgc"݋~ ®1$Az$%$tUк?+ T{ ȗ$%@d($C `f9rQEN,qSڂc雏DU{_VOnp9J~ RsMvEϋp}a8g">=fp'SSe"Oft@9WtvMD9s"]B׮z_xK@2 զS7݋1yc@D\TP;^|M&g`}noX"-Pj׊t m۶mss>99SucAJxQFя:tvvvW?ڇ#t*"MӔ+Ο32pttt7?f@d.%_U=SSz|B9u's;ǫbIENDB`wp-admin/images/align-left.png0000644002347300047320000000111311656660316016123 0ustar vonfabpsaclnPNG  IHDRo? pHYs  IDAT(}R=oAMBdj:*"_HAd :~-=R9}bHٝٙAKdɞdӨ2LL$U$I3ph+hdo4';@I j:Vj4N !o?V7Oj75 "{UUf&v6TU֍OJţ]/4_ Ll6dk>i8 D:u]79єc1Oa2IDr"̜s@AoZGmM O k$ql+HHJ}M֛g{W!D׏_Z_E$EB9l6C nTfH.*c{3[,Spb$UuZBA5PJH$c$`f!U󜳪P.jrhTu\.I+lJ{#H:ίs뺇YiQdfRl!eHy YIENDB`wp-admin/images/align-none.png0000644002347300047320000000070511656660316016136 0ustar vonfabpsaclnPNG  IHDR8< pHYs  wIDAT(=nA_ !"R+Cp2KDtW=Y&mɥJZWB23I4*.TyfNӴm.Q%T3]ONxtu]8 I=|Ƞjf/47#`.tY1}ڟn|΀(m^_о37m/ETUO`(PP<37q.?QPT=!xςk[ w"Pv5 rfp7="V @xzpo\{^5eEvD~/&Jl9"wX!vKIENDB`wp-admin/images/align-right.png0000644002347300047320000000105411656660317016313 0ustar vonfabpsaclnPNG  IHDRo? pHYs  IDAT(AnAE=I)RV,8 ΐ,Q| ؒ,tW}EFB`[GSfwgfz1y&ڥJɸ媞HKQ@wogs/;C 鉈D̦Ry<py+>{'ul-](5U`fJD,m.Km8+9b3#eZJ!qTUff曛>OjH3?%dxtr~ODfREȿt1+Ca 7nejf93)#! %#j`fZkx!l68*-K:BD[kM)3ފȯ?mmZk qԔRDW b;XD!QIbeCx^\"cui$FY( :Q+(S%$<##" !;wp-admin/images/fav-arrow.gif0000644002347300047320000000036111656660322015767 0ustar vonfabpsaclnGIF89a [[[܁ߓgggttt]]]Ԟ!, n |dixeʾ H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-gAMA|Q cHRMz%u0`:o_FIDATxtRklS=vcJ9`lE$c 0BL`LH8(FP!"ujha#1:bq׽sKN89_H7nޱ5$Vl'y}O~uyw7*LBM]dK'ޘΟ}o9'r{u$,R첈w)+/yjNz@Kĝt tk=w8H|DqBsZ'FlrvlAXFq0tv8[{$dͥ0.PGJDf84ct8bJ* &4camq `ֿeo$mcku+yjVA۷XLc:7w\@/xgjaY0Gd4w"c60+f,eȽ5׵Z1($EK[ZuGLyV4O X;i~Vix)d \{>>e^[1[?? .|=g "ӻ^βAjPj XH}Z/7Gf, P\Kk{-x1O7[^q)YZi/;``x\&E'lTP<>\H`s^XۺA̟OmSU,:Ė40R=Xl_+ԃO ^鶾8 C~_FxLaZj|kL$/ 7|z,w1..3[a%{V K&en Y&`h<^M$:7 aw7-Oɔ7NaV}S#uq@?g4┬<\]t @Fe(']1 0H/#6⴦~ s۲Č\x~>[ؾA$žg F3rjA){Z*h"ץף=[؈de1@ ;Os 75R+ZNɾXRAثlgM피Aau~Ao7%m|DS-'ϤB.Lz!9+ȘNc̙ V̦jxei羳TGgS?L']̼GYtR7(<<BRGv GqrJ ڄ?eDMB_bXN^N+tpHHV4$ 'i: ܱ1u4=0(ٯ T0<ድ|dRej1al)}Ղ>]^܎Bf Mmǩm h|O]֬? #!}0Q,!=]Jd3d%a*P{4N]IpܡA `)QD^gc>~rKHpW0jS? <5,Л!@=\yRrrsaÎhӱؠHڊT10 >skqeb c^A!d2GKxwwS_YG4eQqmN^I[\Ç?iiRq5Q9Ps XqK֭i-=YzNkX×ulŸN_IeWӲ9oiH)O_tJTzv-} Xadm 4SIX7k#0,j*5wRbx[~d\}ό@4kAf4[%eQWФ_%-ۣK߶պ ٩9c8-v}H1kۇ _{83AYǘML}UT[d1I|#|RfcnvnH`m&אp X>mDBZ_؀U7Wi`Q_vg=f@DFubXf9$q-έ^C{)y|%+='p0&~,ӭ:o]P̀pJř9]-& c U$2 {yh{np)=fvoΦkq?x].Fthħxz`XJ 7ԗxZZu_Y-v)#yeEr²9w2;y9 pa=bQ"#jl aX{U~Jap_}ۙ:5u>x0uO *SŧfsE f]tK?НHƤF ɲX.$9o8:{}hIa1o_mg1`,(@. (+s]hBX m;L ]C#pSRJ ㇷo٨Xv8: d2,M{9O}/ 7g+]`ޤ(A@E˩ J* }}D'f|b?ߦ.F4wӞC3ƒ -=c[aOJfc)ڗSl2cmy)/7J y{:+|q m̝LQCd4+ Ҹ|PMU6M T(mP찯cs *3Ȧ0)hL"qBm6ʬ/N.kKV 2ÂE. a1v0ܾ~ =;Z лA!>} ;\]|ix#0 ~Yw$>AУyه[<AcMF+Aqj?дϣa鿿k͊.bb.z9%%d=a|µEfnMk9 <'YtGJ2K;1 b  cۃ/IHukI_hlRc9"%+S6@KLʜ[AY*X&i,KI̟mjvw/?ê%B;p),8cOi\cI^+vW\a(d`5:>i.HҩoųD*6(Ss˹}A}.B^uis3l=;XwX0zvѳDI{,:$+gD.|GK)pƁxA;RJzS_,t"F|@J2|l&b)TZŒI{S^,U0ھA  ~u*.f1GOOǧk0砜Ҷ>? #6* 74 d͡JyJJP̺@s&*~BФBgpצ5YM?O.|*q@(xRɺ2p>&G{dk<`^[egפd/ush)!7aIRP +,2`H4$º bZ2ӜC 8h VbuVp),:(n !&h&zA>3rl8 ~͡,15}P.!÷"xգ}Z3[Q+Fϗ0,]W6WYsr@LmvW/e:ZQ.;n6#Di+P0E<+rG/'zA~!mh3x׸1@&Um!~1F7@L)4%>K⼸ĩnhL, h>Z\gcF ~Ŝ F\#o1Im&imJVl\>`V&3Lvn7wM 0@)g`VAzNJbt^֑ 0_ ?7a&%p&lJ׏Q a00iM: ;zf@*o a͓L>Y&VVǃH+Jp;2Ϙe,d 0@2(hcخSqlD&>|]^hK%%}'H0ϯ_-%TU'poу#\.Y(@J 2seBXa͆Q 1[JQW,~A+_ӧVy.10_~H  2oNEG֨K-.C B[}Ky9 7"|b Z5e)겋1ܭ-袿,"x\-,,]1lZ]MVQ ]>ɭ‚l-!h6Y@3pKLYO8 S2{3F-4z>T /މq ;ǫR܏R#W麠 p{6*BMmk@fn> FWҙVo(K0pXSc |O1^0a g@ۢD&85/+3io1'`UAAFLZv~eWY%@($2 @uǵڄ`rr\%UCם7^?Y- ^qK$Y—7H9/mdgymljnsͰl\#},)f`%ƘDWW fs )1L/yr~l 9wB{`ׁ5< H' T6IXknJi H|_^$\e.Xr7%1423g`h'AW`T)ؓ}HB,A.uX-zt0fj/?S6y)|Ap"-ޗX+c vеuit9aZ61(HkqJ#hf@i?nB.n;kbɍdO_;˕Cމ\&.dWބ5Ve+PiX 1B bӉKloߜu9ezz$O!Gor!>y&]:M7G{uxGjZ]~o 'Ăa_dEIbK6K|Hsנ>~_ւ)^v]I)ѱ?&6L+bJ'L ([' ?@5ڕ|Җ0IJsmF`EP (1믖{YVIЄD`/!{,8O`Z篥 <(s$-\ÛLΰ0kH$|`wWS2Xz>Q fLZ Tz $E ~8"(fsh^R @_A) +<.[<' 7 ÝgpO(0>1^᳈gJ .e/ 0KK?m<֫YQtcR\8+(_$›H31| EF'0ꃞb"c't<-/!&E/qģ9|iȹ.)/TlRf|wGn};zWO$`5 a vqfЖ p9pE8`T) Yqߣ$SHϗXeM %*G`QbB([ܨF[ Pk 49wbA"VUbDU} d"fc `xhɌts'5#@HzNOCSe2'#XB! %1JxvHR()>c&3NOoD #hk!3= x`KJILG[FM^,V3JQL-%]8ot}IaI]աyVhW4}<=sh=7Gm>2OfWRglszzZ$! MHP"`+C:lwyΛ>jp}Mϧ[a!ӕ(+SbоbQi$K<,IXjGLg} :O+t(*4oWyɁezE@TN҅{w|:ٳގ?UFm?u9b3ؐH`x f6Z}Q}KOl.cYǘAfruH$0D\,=_Z1AۚBAp}o۽ecƱ(<L~!F p4?%ͷy`sܩ%f1VEKeb: KB;M =_QVY-?Ϙ eK-&%uFƸD`OB5ZLJI.3+;ʢo옐AzI/'eY”WPu(Z[uط*v<ՠ"ٚ#9ƸHB Ït%Gu[Zp5.ta)UG.Vn^ӟ/@NY@qI'}xQc`x}śyBff)=$W_iQ؀E_|-aD||WyGr<ݚs'/+խ7o:i‡c>Ӈ{k(b hY>ߕxl +AOm8̡ aMB5a^S+ ( [-Ě pycEZ%Y[b޳'i)C{1"[JgB`)Y%ljt]#:V1J-xuHZ, x}4Vx$XXh^f& @\9!zqElCs#H]yKɂigPZۅbXxsYAc;7L~,TvFeAI(x,AX}cީfVąGd+T D~yMViN܃f?}t %d;p/4=':yڽ4X_ȁ}H^e6aA-^L<8ӹ[XA;s9}`/% .rÒ,]_%717FvM}OHJJ\Y&?Xaņȇj]{Y<OQ* s63s]$6 }Eۚ?ҳ%g&C^z9U7@'s0޲yk\&[ߗBUXnާ-hDVK Y߷3ϫkOб?ylEҠRh `IU ?D9dE56S?9|fǝO}ۑɬʰIXgZ%Ӷܼ[\w7:,e@ b%U)To(9L?.ǣPuo-6s8h 5c#Bs6FF@"J]bC}Sa,gKM1d#QlB% -~ Tx= v`hM-4n!@_>{ug?z2o0>wg-J&#tb۱ϴ*n{Zf{ddwOJ8u6%ނJv}2.2f6G.>NJe . 0s8P-GPv2f!viˤ9Vt*ir"PLCO6]!'P!x[_LXbFflCOE`IhER佃ٷc# )&]gRA(R^|Zfn1 n™/,`RX=|jRiXXD+ެv+)eiieqPP+`,B<tL\ِ6P+GDlxWzI+-(aW/7kOm-h_sOy#z7=foW9P$G*v,}܇Ȣ`}7 I059J\E6,GFoLqk,_АA<'0|8#Aw[Pp/]>k䢢A }+w|1=ZؔQCA[6'{濗TGXX0h)h}:x%6bV(X+K[}"k-`5BǾ뇧Χ}{stG@ !T`!m}║Y5'WH@<%Zbq8-'\*+HHKo I:[j_HWLp^V<(rbPe`$,p([QW8Ѩf`pC@hI؎-_*rskJJÏ[\VaO"cӉK|I`aQ aA)y~{z#`oOR0XϒT*]4Zαޫ$Z 7Gg}^~}Xi.\ѕUy,pSP X_irȩ*ys١4 ز]2 պ0QTAgkcYr+i/`1]#;6 * UDSµN!FVP#|5":1gQ@1%ӶnPUN)~QMXK̸֓q sP!UΊI`.%{%eE=O`x3c|!c>g:dFcǃ}&U ̶hu fQs ;XaPZ+ǖ~]d*ȟy6o[]VR|="%MrX]gtkq v`L@ý]3oaj"R:@d@q4Vifu PA󶧼SZrmU(vgX 0LB(a< ⍻ÃehWE rK0`dž!2[kc! ҪmA/~j+#@~ސe[ vM/=Jtlk[!@. XþwwSxÜi:g~}鄮y6zbgЗZR};<8kઃ#RXRY٣ߵe}ݓg j\HvmSbFh@e1lO:'&$,SALJħq{s`ZH;k6Iŧ-چB {< L 1{Xqy 9e ܪNPp bz; IW A>ԽSY2)$X'0 f'L7Q= F _TNv,JM5.VT*+0 a^A0:i[bݥZ4 os46dL`_sFI;]H m^|YF{<2̜ߚ?['UFROO}#z~ cx9(vy[5`I _GIt{hCb[};no.ⵌ_q$D,'K~x(ye9$r;tR@)TV9Uي0P!^{QB`?,ðΣPa_h'KCewyFI;|a}bfPtP`ZE>bMaBA)URmsw0Mu j9hڢ ZrA5#XfçTQVE8PX>mBdxFW'dۅ|_:>mzOkE*x2{{ =:sgS}Cf( ԫ%_vqv2kx=LPUW|hNwS l2YgH[o/dG.&< Hr)@yd\2s6]IN wO P ÃxwHwhSmE޵ϴm 8A3SA^Y/TԕX*t)oYyurrr>0 :88 *ά#nb-;ȡMc!00 Lanw b,Iwi\_MX/Xt0n"k!:Wfl|59>+\?/8y&J@nnt~ۊ UURI%TRI%TRV}*J*J*X%TRI%TRI%T@J*J*J* VI%TRI%TRI%J*J*ҝB/ Tҕ_qIENDB`wp-admin/images/icons32.png0000644002347300047320000003447111656660324015375 0ustar vonfabpsaclnPNG  IHDR-} pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_F.dIDATx řI`h#9Y$33fe!qI̦qI4DEEp5j⊠K(@ "XkN{>νvKb!b!b!b!b!b!b!b!b!b!b!b!b!b!bhk8sv ;[|C1C 1C h : U2#<̘1#{w;68p p,Y$E, Rl߯H֯_(^s#eF+YIO$ǏO?%?prW$W^ztM<9U2!|FA&kok! ꝑN9' iӚ ԶE|]>-ܫ02(fjyiK.!C4wT;oϙu,L }5k)ֹCyU(ޔz6gM5M|""X7uq) sP|0g1RT^;L;[lӒZ@pYgRGۦ"K#|| GYSid .p=Xfva .LYݻ7E>oLb/8Ӕ M y~8A7ʗO:JmbuQss i@CY qJLNY >0n^9ZpzhG^0|UWRTb]|Ӎ7u0 L,T[ z`cL):v{_zIGH64@o^ZCY/RZgig8F]暷~!8tȴ;zN)ZX&`Ik=^OΛ<!o4ļe]C #w~{_i9ƹb~wiTu*J]K()˗uY%ŧ厧%4(R2q =~DN(noNg_W>磍c#ʕ+m>R@ zɩzE@B'NL&L S-q גi9P=`(2(FЁX&-ݮ Q;!J:.R~l64ma!)Sp,x4^Ѐ @qv'7w@ 1sr`уo>yp5 08C{ 3ECG$aO\L+M/e5W$`fun=@> ><혙vndž<#i&L>Ke"!c+op ׿uyW{4Q+(6ϣs}Yr̳7e9<ճ?& b fe iWhO=䠃Jz_ qxWw_99vub\LBBD BGHt8p-imD .aF_ŌNTb4H噖t仅8"mg"ӘѰ05Eil 1͆8| yU h7@:U8.qhI#T 0% PLó1}F-] 'zy=U, HSY.\}|N:ZW# @?D6&(MB{Y< ,g_P0\&ݭ\ (ݻwi`LY-3%Tn=xTHI m_t/| 9>@I!JY*C[1 @\DSc\õa-S#q Q, 8WŘ {>i'ɢ^Cq2g LBtlj=;T4iL51m}(` '@ǹZ ili3a@LDKƀǃ79'P8ɂ@#n%m@UZвs35="2_߃݃;&=noDvQCb(#{Y23'EpZJBӟD@9b>0fh JCtS~-k99@^ŅbH :4.։wKBr גi `ds)bCާ Ag %O|B3+\Tg F@6 6S^w7=ku1:th*bhLk@&OOg@a/Qُ 4ENO 輀kiO..[Xfx|wKޢ5WX@;!C'WEy]吼2C!&!5 me.1fNjg' Lax7U *xϴE(U!^ҟȴi;ӪZE}!e(F9WLxi_;/E1 )[ k5p pM? \ۨ@\r5;j C9ga00%[ : 8eLcL-@fw? @ψ<cs`1"g* qWv E2uJx\õAZN z*oQ5\4han *)b8)^  PkiTe4:t46;@CHh!I/\>#41e^o ;c_N;yrj(]??6>4-  OZ]f$q !qgBs~"|/ފϬF^8ƹbЁ8ہdw|? 蹰~S(&'La; YGd12XC]C<]~pѿjP*)ur6wb뭀c$0&ZC]ڪossf*k ֈbw֒X+Z8$ x !eĠ5uz!yh PKU9cӊFbu0ȕy4tN֠ҙvn  y`Ǎ{#~ 󛁎#rk60 އ:zSЮ}?ht}wm)Upm398(,,eކMRCZ"wC]$y$kGO33 ;J3,SqSiSQ] GA{]WRbhxߩ[GqDoDa d)5XB{DמPlqu51ҰҩT aK*]=Bb 2BHEs|>G\+r!(|]XP+AQ+HPoܪR=E#C%Øw/SqKʚ\rw]7tCjY,_C\,-"6ꀽ+kez1[coϝCamG?S3<33jAhSChih?%2Xnj9pW>ma?*v-|6:1擩rNIq5\K~ -HkhnUǣ1iyS50<+޺ŽT7Ζ/K.h)jр>" ȭ4JL? &O@؃TTG3`fΉ ݎqpmH;ᣗ<BO_ JOLpwgVˣ:a /`ϙm/;@+qY< ı9TK6 (F3Ly5Įռ?fZ?I iPx3L%ȜMFzՊľioʻC?a3?`Fij0_z衣xmA:O^&Su81  ʞ260h(] >2D>}h$ |W ĩ4~xzgtDQ(E .gL3%-|Q] XP7ŰvB;I[fy]>L@-'MT|r})-os+} '3/fe-t=2s1Ŷ@[{zA1# F]L\=Bs9' H2;U1nBQ8Gr גi&ڈt5s]C@LD#;hi.Q" g4Xh [SLf/9bq^P=+gv q 4MPs = h[8}SO fî k-ev3ڣ.ySލm\fo$>23 >pZ!0&L)f`RQv_@]I`CP@LF1kKN@5# jȐ7_QZCm !`睮% G܃{d~,-#ZLŠu`X q/k 0[ 5>:;W#-LnCb; y^ot&m 2MVA%5:Ec3 EԅFa{ކ82& FP{`JY̆pf*e񐐁X n$;MW0qwqZ7iGߥZckmJ,%}#M$ʔ X&O;?\TQ?i]`{E@k j<;D+ n ?^x/'ӊxRZ8^ץ;y@5]8CCBqD{;}6^1 LR L8W:Ҭ_<`]4N4@oۺS _O@1y&TYՈ@a:wHJ5y&K5Q&2/11dio Ę<7,󿩷q;5\ȟ yOw{Ax1 ) k c/V11(Rom{KN{ a0 X;н6j4רomKT26%b!_[w{^n绷bm,ռ.k`Dy٭y#[hgy4h{YAA^ɶ)/CYH' A1 RG5-ūt~#Ձj Ѯ#mBb4Fyyi +]Gb{ 1UX`zp20vʧqg~' k˼L1y !ٗ8ԥyG@ǑoǷy @<6ߍwџ)+oOنĸLDb:ih@3.يb@Xis" gFK|'>;MTxGVk RZԳj,πʲs37hL*=|k}eK|W^^<H S A [+@<{QPVyo|Y\2 4t.LU KOu#EfnKgg'y(QP)>i&is;JlW4kIJAZcaJCKT'mlxC_a_ :$; &߼p0t[2 Dnm/FB!.bL-.L/^ҴavKuVL'@|LvP$CV7}f|Uѹi-^b#Efho%=%c$I`PokfivmNVZW4k}A3Jfp_SO>?M풍.58W7Kd6Z#rsiCb:O Fxc NDkCge$ D[@[C9Yj+# w@jN yg@W(@ܤP .Z]kkn qY[0s42i6^!+yB8ps ߪMU?g+^ ;_Ҵ$m* 6ANWYH6"A*4C=mva!t5i)q\|bŠےl {Ea^ ܯ]:ARbl5qH&s\Q!>&K 0#vĂ} YmP~>vh  ;g((na8?B!V 0bZPa66uDbs;ڢ`n=/cp81A1i6^Gcåm1 * gϲ vS|Oe.L'.+mYwtC(Q~0heaVsk(`B+zA1V#m@H@w& ;eRb6@ ĕ#Z VF*A_~ろYB::yDNLRD׾}q!1]#zT4 ØvP}C1b4Eb4t6ύ wTt<+P\-elofBb$^)ۉ]S/pEux/*Jo-N5l;/2i6^x0g0cko 5s9kŋ5 G n9333k,q!ńn CP<@l5\AČRZ nE +Aqgbo5Jבfmfth({f `Fd' `/xSkXQ,*r^S{+ F0_m(;u!U VlfacN@c21:+:x`,|VzEn2p:fr@))?`bvT]O-[tF^R{v0i6^!1&2sZ P^3nvM'Wn7#R,_ Z{Aw{A:okϬ u2oVq-iʼb<4l@Z^M~#^8^B=ˠ31 րuYˍ9%~`:=kDt:RFT S'&,feڋQ)nH@l!higdNb:@ScLxt߂!-%޶@{i7NfF( 4ވ'8M&[2V2B}a7Ej6d B5J _p}ZՂw) "Mܫ@,ݚM?@J^|z-×p-fޏf0s۬@|0+^-s/%-7e|Px7iʖޖr/ȅ> H$ɷZۉncEOٽ;}sy~NHnlnM 4c:LW7D ,"XcCpqp.`=k`2t뭷Zb`ju!1)a&m߇{r:iҠ}`r˩o>Gjk:Zmoj*nִd.q9yN||w ƖdvvnDaΒH)w܉={.8J~!qQb+ j+I$JXr`ɁoI]k/I>gGvOJAxSދޒ,QJqCb^b~9wEM].H` oOno?UܿϬQHX3ߒJ}%)۞%_˔+(d' @tԻfWhWцbrY7ssG6R3oHiӣ>8029:IOP|=p_rz8UAWv]{nYٲgیN>+ ¹dimevٽc@갛*s8ocL,E5F~L1 VQY=AB#M Yg[s((haLtKzI'Kn\c$-9\tdw'd;V`x?h [t zw,DÎ fSpsu|$g mG?zH>,od1tpčg}j,D- <}]$%pd 'Φpc!M Vk>}|VD/jA%I~$-aZlxBc9&9sJv X ddK6|V%%{R]V4I 7X玗,ٱc$?v%wfjQJooEd1ld)ջH.)27WUҥrAh;c6EZ$+ |#8gv ]6h.3 ?G%A7ݻwdz8~~*p-)B!{c!b!b!b!b!b!b!b!b!b!b!b!b!b!b!b!b"YIENDB`wp-admin/images/imgedit-icons.png0000644002347300047320000002260711656660324016646 0ustar vonfabpsaclnPNG  IHDR@ sBIT|d pHYs  ~!tEXtSoftwareMacromedia Fireworks 4.0&'utEXtCreation Time12/09/09A< IDATx]yxE~HHB.#ApaQA]P4mP +nz,*%(. " "j p3WOwW1CBL&!ʼϓg:U]TW_Kc#0|Fa !0A8qA?<g aB0`gP'8O]¸]wCh?cby @7=aR!\ $'|wy/SM,---r`4;x'ZO6\h@~rXN}o޽_wH~J mݯ?!"`鄈=W+bA zdDv j ~4Tg ?VkCM? !%{&`3 㜟wKBi:X qp9% 1uV`2m" F@]P6`w*TOgZzĊ$cHq+ͅRf>[)=?܎۫4UI9M{\z@Hlh)=bV*La㛫r`lh!%Qěx;Ɋa ^l 4  * -,90Z ppݐ .& 7<|v,h1H2{%  <Ňg%CxW0g'#{uĖ8k+)Ҿ2:[ͪ yb .&9&&F e; &&FےF`v.-9:>e k&iO{`Ϟ=p߅'4 s{j]* -PLSQNi("طde|m+=6//3d8zEl mh|qS7X0 zEC3#' wf-k4Î֭Ϻ=+ue im4M3P{'OߞW~G۝m&;&=ƺ'c" Xk4`4@ P*15DfgDƯkI2IP Bet[:YOSum ه胒1oY$7bT -ܢW8#Dw A| < 7(Jo<*tLJH?g|5 _1?9AJRUf+TnxdZ;~㽸Oyj9~G lB$)S y-M0Z/6a6Lq`C'CqP'@C1.4Ơz KoLP@)@=:c{ܵ ?z!t DSˮ0~ukgN {T/YckeGl溅;}ˉ wǂi)]ҵJ-/ja5xvt̐DW#vus+ܱ뫫Sˮfc2z_cW7iр;WX A*1"M)L,kz}S831T/ `)4暑W4m!=q:'o/x7%% gلtbٺGqF$b@`!F\<W9܇?)rFAM) (\ nMKTwT!(|*>#mZTTVC~?/=9T> FR?h|u2N 詠 %ن/QU?T1F_&Bxr1~u$A n¥hp)kΑ*"(0:#F=/ if-Ϟc eu|EAAb-:1.! K9 rId2OXqv夝F F!FA FZVv(5.(*LK3c,_*YKѩ7c'TQВG4aP l<22`weqc~)HgIfTYyfγ!I:udz` %?z #=Gv%B$E G4Z 9U.e .US^Ժ!pO`yX [|_Q8}ƍ'p)a+VRjm۶KNN.T]/ 8'N$PJieee/\K?~6̘19M8С<_q? Zre* 3f@TT233hy|ev[? "##qaXVl6l6v8N5Y oܸ& VF޽a0/R$$$ ::_|\_=\.ޛ:l0TTTw}S7(,]x !+\bbN>ζ,^{mdVVH|>##?SJԎS I?ȑ#rt:ayT;& F~EZUs Q^^^\yy9q-xmh#z M< @o^VzKS_KS9sfioL0aýoږԟ ӧO۟]fM3gN{W C^ ᮻb={b…s6l8+v\3Ά?1gPSϫ}z,qwd2u{nذaի׸ KOOrn;۰K1Aff&F}ԟ Z\㽩@4q?|cLa:EA>2p$#ҥIII:tEQl6[fr8N悾:xlڴ1cEl6ɲ\e+:vbDK^ D|'W%''0ϵlXLNy9BZZZsl Ω*Ϟ<80TQgcɪTUux^YsBB݋$XscbbJgN4v@rrrǵoi8~O̖8<Ap>ywcyeeeXz5vݐ B>-[ IRkBj-VQ޳GرcЦ^cǎn]ϟ}ـݻwÛ4M:>,[vUU1YϪe˖MpUWf~mft:uBdd{XpBG xAj>}p8dèQnݺ< $/xc5j 4Mľ}PPP#[X sÁ5kԩS{( cBڮ3QQQd$iIPJ1a„Y6l%& ֭%&kW8:{ɇ~zd2k׮](~AEEQN6'''n#޺MlӧgիWGX(|mWٻx^|E?!IF @Ʉc6Zvݺu:[h ]+XB oL_IDATCx!dM@1*xvSÐ!CFݻwWi&nt9Nn8}bP$L&`0\|C +ܺu+ g`R233+ ܚf}F8ξdgZZK$,˕ҌfXnj ՟Ze555v0%Ieٽd:m4UUUB$$$~^B8p_Dt#CYYÝ[,X,+czkƳl_‚+\EǙy7kV^Mf̞_\ԟO> _v\veEEEnw9EQMQ_(++㪫5Qe̬V+۷oEA ?gddЉ'WIpM8,**JUee}<'gBHUU(s+WyL ?ggg6ԟ].^z%B%8+tn^jd25ZÿY<Ǚ!Ǚ C$I IN WVVޚ1ҫ=#1EQ)·+++ = W{*˕C)]}ر>3(YQ\\ JjBHb=+.[mMEH n.aY_=ux|˻3nٶm[ѣG#,399fChZ&BÇ7B`8:u7xu^6R7o:mڴjUU?(,,؁`ԟy?q\UU@yV R ;fkhuauZm˚kQSSrqqqk#v{?ϝ9( OhgL>MUf}X]]G?3>P՟N<3 @n!g d֠5 |5\=MzؤI/^|wJP$IދnrBjs˞7dggG}Ԧ(ʪN̲,ǭi*AloFػلNG- 4MÂ-zYh v1sϩ !0!LaaB#0|+nnVIENDB`wp-admin/images/list.png0000644002347300047320000000212011656660324015052 0ustar vonfabpsaclnPNG  IHDRPغtEXtSoftwareAdobe ImageReadyqe<IDATxXKK$1Ό[T^<{Mθ.\PDaU@eo2*zУ=./&iTw:MKGB.)ߩj occ(B8t2⵶H$ƒ?pQKKKm???:&c&-9>>hёe< q RfZXImoָ?yhT9>&K+%L<(!r&NLL8|uD vO+8<,`ƍ'Z\<@/Ɠ ddD9>⢀d9_8Ivf]\푶6fZ&JB2(Y^^fd/--{ء7@^~UuvR?gv%xkR1os ĠU%??E6T*# oE X\\Toll z9pts]eggs'PʻNYXsssYɳ.;99Dt6&;3'[>cԗ-·2333Fb #36hU?OkxeeeijFE`Qu6 /,pNNNI<\D2/ ֌Y@jkkc~prKa`G(P~MZѺ+`e<+h&~^UUWz yssSÇ4R\\Lp}N^MMMIQ (01f?=Ͼ#~ctIENDB`wp-admin/images/loading-publish.gif0000644002347300047320000000347111656660324017153 0ustar vonfabpsaclnGIF89a333򡡡jjj333yyyOOOBBB666^^^!Created with ajaxload.info! ! NETSCAPE2.0,w  !DBAH¬aD@ ^AXP@"UQ# B\; 1 o:2$v@ $|,3 _# d53" s5 e!! ,v i@e9DAA/`ph$Ca%@ pHxFuSx# .݄YfL_" p 3BW ]|L \6{|z87[7!! ,x  e9DE"2r,qPj`8@8bH, *0- mFW9LPE3+ (B"  f{*BW_/ @_$~Kr7Ar7!! ,v 4e9!H"* Q/@-4ép4R+-pȧ`P(6᠝U/  *,)(+/]"lO/*Ak K]A~666!! ,l ie9"* -80H=N; TEqe UoK2_WZ݌V1jgWe@tuH//w`?f~#6#!! ,~ ,e9"* ; pR%#0` 'c(J@@/1i4`VBV u}"caNi/ ] ))-Lel  mi} me[+!! ,y Ie9"M6*¨"7E͖@G((L&pqj@Z %@wZ) pl( ԭqu*R&c `))( s_J>_\'Gm7$+!! ,w Ie9*, (*(B5[1 ZIah!GexzJ0e6@V|U4Dm%$͛p \Gx }@+| =+ 1- Ea5l)+!! ,y )䨞'AKڍ,E\(l&;5 5D03a0--ÃpH4V % i p[R"| #  6iZwcw*!! ,y )䨞,K*0 a;׋аY8b`4n ¨Bbbx,( Ƚ  % >  2*i* /:+$v*!! ,u )䨞l[$ Jq[q 3`Q[5:IX!0rAD8 CvHPfiiQAP@pC %D PQ46  iciNj0w )#!! ,y ). q ,G Jr(J8 C*B,&< h W~-`, ,>; 8RN<, <1T] c' qk$ @)#!;wp-admin/images/loading.gif0000644002347300047320000000474211656660325015512 0ustar vonfabpsaclnGIF89a! NETSCAPE2.0! ,///vvvd uBz4q@2,,F@( ;cKJ0(&$`fj0PhQ( B+Q\%Sr=0(FS A GKv E  Z$T 0#]# Z! ,===sssu귂z4=L#0 6D#0@Ƣ0hp.`0 M$c{j 3@X JI1 L'G4LB U  }NxO X` ] c54 Y#`#F ]! ,999$uzA0= >>ooo$2u {4= aă |ʠ̀X(1 M$n8 ؀pTۂVJ0S<|_   H l o5]Z jN b ]#NQ! ,???sss$2u {4= aă v2.FX(Eax,Ii L @o=:D(N D?A* t H.: CYa ^ ]-WOa#f#u ^! ,...ooo$2uz4= ă @5F X( H &qb 3I$&ش !((A,    H._  W( \$!  1!#_# \;wp-admin/images/logo-ghost.png0000644002347300047320000000105711656660325016172 0ustar vonfabpsaclnPNG  IHDR7uQtEXtSoftwareAdobe ImageReadyqe<KPLTELLLYYY___xxxeee~~~RRRkkkqqqrrrSSSlllFFF0&btRNS4 UIDATxT Ey6F4/]̦-3G(>'˱S}:m!j{o"qntM&1-CESHxџq@Yň$m){(L<2x"tĢit$c/ce4vΓSV]P%D,'jg~XB%$W{ځȴd%8b!zbyX20U8`l%vuEDI%> gXUiA-X=֏%HsP֬XO7!Xs!'ᄃلlG+MIENDB`wp-admin/images/logo-login.gif0000644002347300047320000001132011656660325016131 0ustar vonfabpsaclnGIF89a6FFFF!utttsss]]]QQQRRRiiiXhhh⸸\\\͠K̪.}򫫫ۨ9-҃m] G̅X M'8(!ѣ׃5${1b H(DafbЅ ObCU M.]SLtgͦ_ay6D 4 Bd A ? &-/D i8 XQ g0(&IĠ'4b8b32D U@@$n?2HS-#چD3H ? ݲR/[k9'ȁ ;&/Ђv`|cAhd lߎh3^6Ҁ) w҂d1@ 2GZ5c"?m& f<]@ J@`[E R X<THЭ;,dV y̛q+ beca$LW!q'={x~['B>K" H dI8*2ddH]"ҹSdENTB \ _٭m3 bn x R7nyhBO3%c -&jO(@uI\ wް1qAJ$M\@L2Y1'dsx2 do1\)涌V _7n-v3-[5-99= MDdYd:ӌ3&MDHKk4:?˓ U$uyh6tkEbneaXu4kn @/B\0T`2xI}lyj԰ mD8V٤3y]ɓD@ m=L tB" ˹uXA2S1u>o7 9a@T(I܆: (paV(>!,g6k'AfO& ]f^o&zmvv+[tL*(  IJv"0^nm6j7.@}rg#. 3ƿndAIi}b_s ?WhASbUO(`ejqxB'OvtD&V| u"gQu݂g!ph 1R_w5p7G!iM$1A5Us q>1(5>09RSy[05QaG|G&4=J'Bm pbpaX#-7t-2Pm>S0ZȗEHtGW!LH?cM 5֔IVhV5VWH}2a}Qf)y }uxgQk JP_wXp{vX~Nf8x8Idc,5POTfvLS<%'6y$S\01H8tgp-$HXނ1^ Qra1-q56XO3cV!;C87 RfA9!/A{*3X, \4!BTa\#]k>d]X]x-&'h=rϓ]f`=$AVҀaz!%to1Ix)`3?7%?hco1: 0#!#f vh.;@ුfyg-t%fKRZ~`Q@Kyv$K %V85Qw+RO :e'S:)8؅D3q}t hz-X@RPYe0Ui-$ELDYJ-e AkjXu%3 aC2/8V8BRwSsf";RtpqY"'k*iTy kjb04@?ޒ%`F?PԊ+0<}7R A!PTV NTB4Iwq-s3qxt02,3q3(s`mq;x3i`F`: ΖIP'_pU]PDbP m[&ipg|y7N8CZ3ш*Br9V "V`i^0sULmh4Bӭڭ:H*sẮ/O-H/`r?CDX#I oA c1w3ib\3б+p*XIe>`KǍ@#[jJU)>k>P&4Zr!E>xv&fmR*xc -GO'q;f[(3b5O[{gC<{vMr׃Ctz[p^[ "۹#!@/)Y!TR K!PO7 ›rsbI! ;L8Or4"}Z;QC6Po3!PdaHq; {-1%9mKܑ#PA+'U! +( =& Y5&/}$v!'<1QU4*4}1*2OI3@z+JP;wp-admin/images/logo.gif0000644002347300047320000000241111656660325015024 0ustar vonfabpsaclnGIF89aABFFFfff蹹RRRttt]]]!,AB`$di1Kágmx`Q8rȤ(Pa:UV`ASzI,R*D8tফ}9p8 thsB?fS ' v~gY `> TBS ?TBS> o^ >?U>HR?Λ >H1TYn0`4 6YA !@Hc^h=t BGk&Vx),\,H0`! jB'G*p"G%qR, jCT ͭ SXFѲ栁1o.IZ/Ӽ r̂ME A3w=W;-$D'B+. &N C2d? O,JHZ)Gg*D%P Ё-1 M.D7WƉMLBSvfiQu@v=;xg,t]V^m&|p@Е- !G@ ݡ-܈`T.2ҊA(SHM$Q3tc(vLIᏗշK7TwL +Wq`Phg3 %#х%)(ři`g(٘yzBQgnH)rjG]OA#taeKޔ3lߨԍipDg)SP}W ډ"0S(!!,@mŊ'D.r*^i\ ߣ' #n"EzUhʉMA{'pBQ%5"4kQK T&T%m-`(v! #gYXC-3 - aGqnDK+.74Cq, 2huCC"*[! FÊfcR5mkû9|S;NMˁ]sIR7?(ʲFq,u q h+_w6Ě@_|, T&xG IN^BTpiG;?FїF#7" 0ݷD !S$󤏄 }M 7@1 .;wp-admin/images/marker.png0000644002347300047320000000121411656660326015365 0ustar vonfabpsaclnPNG  IHDR;mG+tEXtCreation Timevr 14 jul 2006 13:31:23 +0100CgtIME % pHYs."."ݒgAMA aIDATxڭK*Qd*`H !t!E-t-6 ڴ*p*B yQA"-ȍ$6*9{ C: сs{ cҰ$,X@W\HU,? T ^AlqÛ`3>RE*ˬ^3YY(b>{`kVQX`0_LCzvt&=(A+ rN `V0d2IN =^d{jJ>eXr ")nbT")7cccbQj݈eZg"fꖅF1p8kE/Rj8fN^.DWzOdp*R)BHOXxQb#O^LjIENDB`wp-admin/images/mask.png0000644002347300047320000000374411656660326015051 0ustar vonfabpsaclnPNG  IHDReeT|-tIME3 7IDATx]R: l d8TQ7[7;}^c)qRj/4_Dw+\F]hztG;J:\F>vp cnd`±sVsɵǁD$h'=]as'BfOWdLeds(L׊GWHBרVFa ]W6Ev&xM,8O1};Bc JvY_#eTW ʴd>*Q<ZL̛q)'5Y|=iWOYXѵ؋I0G QW5ذD8F֊c(X%KIFu]ڲxZ&[Qp&NxCꚲyI%&JH#YtŖ˪'@zU%zI V%9 :'_2˂*%C',"# /a×gYVh˴d*,ߐ: YD}A8H#zr1*kwѰ%% ~T ) C cUҰJaq|#~!{hi~gxLdt#+{| ~#:̣)-QUU8VVː&A#;U=Pz241:9N\* AB#Q1q'Ò'y!'Q0_5S{NvGgWyH!'c.'Sq s2MsclV + a0N&?)o Z6`9Y٨9x*@ʎ "0~‰aPO,)(ZƮ̔ r1˛ՒC?&š#坨l9QuꬬkRS*+p)7g&P;3GH vVy htT(vme0w.xRp)V}iin S-1{'w<}m!`q| U#SS VhxA}˺Ҝ&N d7Q碝+Rޓ!k  ?=H¡URnDqq $cPAdbqP,(4"T?&;H@P(0{^^Gtg/O^1FR P%.c|B=0&7F!^6viBҚT%);QX*']OA;V|MKBN)yS)/i&—\ThBHơi4En Jݣ\^DF A، 'D wYjS!?sQJwM1} _K\~$bVr7zJjۊ3|zJb(2`J DW]ǀȮ#|]Dkg #h $X!lkgR" fWUUy?#z a!' Xi0}vegTkc>Q /2Rd^yJE<zJe+O<"|Tڲh ~LfA `w8*|])a@߱ڧn0;>K}9se5[IENDB`wp-admin/images/media-button-image.gif0000644002347300047320000000031611656660326017537 0ustar vonfabpsaclnGIF89a www|||qqqϪƶkkk쀀!, K%dYhzR뾭xLm׳(P;Q"(Ch:KpXV 0z@!B.zf*bN' *;wp-admin/images/media-button-music.gif0000644002347300047320000000031511656660326017574 0ustar vonfabpsaclnGIF89a ꗗyyyʁYYY憆π!, J'~vxm㷽nNU;&ʎKiDܵtO0UH1h2\/@4p2=e:.;P{;߻a{1<ʏ00"D7LO}+=

VW[_?US(QO!蔂M1ȔKAIQGahEqHC(A?蓊=ȓɧ:јEce;fcg?diCؑH&L6dTVSJWZy[ji_zYcIg9k)os w{TH`@O},*S!51vA>¡ؤS !S(H`M>UA 8xX{V[T!;R1 B;R{brlfnYn禙nnoZoWBS:oS>) i!g1leALcQ,aa _q]̕ZQY,f`P@ (pA2u@13YealV<)Z-,p S cs=}!=[YэWmUMS.QO!M1ΔKAIQGanEqNC.A?=Γ;9юr-+;wp-admin/images/menu-bits-vs.gif0000644002347300047320000000265011656660330016416 0ustar vonfabpsaclnGIF89a<|AǹUkkkԀlllrrr閖㜜䧧!A,<| !  *\ȰÄ"JHŋ3RǏ CI#(S\ɲ˗*3ȜI͛8sYϟ@ J(H*]ʴӧP.JիXjjՀׯ`ÊKٰҪ]˶۷p}@ݻx LÂ?(^̸ǐ#Kn˘3k̹3fCMӨGGXͺװc˞۸sͻ Nȓ¼УKNسkνËOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($""#X#ژ##$ Y$$)$9%Ti(ԧc WZ}>e&#]`"+X~B` pC7dY9]zB芄X茇ޘ莋萏钓>Y锗j覈rꨨ*ji~Z⬴j뭸|@`: +  * :JZjz㊫皛몋< "PB}`; J˂ p/Kû֞-t)Cp r\$r,7+r/3W[7s;ݳ?wC#]tG3* Pb=U_u_ov`-U $u#@B rWw$ =Bށ}N8l܌;^٘甃޹W꧳:޺^~׻<~#_ߗC߼}SW=w."+;wp-admin/images/menu-bits.gif0000644002347300047320000000216311656660330015767 0ustar vonfabpsaclnGIF89a<|2檪̘裏񺺺򼼼!2,<|@pH,Ȥh:ШtJZجvzxL.z|N~?    H*Ç#JHŋ3jqb CIɓ"e\ɲ˗0cʜI͛8sɳ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ ‡ EX1XƏԝNJj+֭YÂUlY_ϪMVWfV{.Zk};W߾};wp-admin/images/menu-dark-vs.gif0000644002347300047320000000036511656660331016400 0ustar vonfabpsaclnGIF89ad؇χވU!,dr d$㉪%K)FT@ ᧃ4Ff&,,;znx5d9^_eZަSq\_߹}_{v~y!;wp-admin/images/menu-dark.gif0000644002347300047320000000036511656660331015752 0ustar vonfabpsaclnGIF89adᴴڼ!,dr `%㉪%KZ1aL ȂbD{TF핐f&,,;znx5d9^_eZަSq\_߹}_{v~y!;wp-admin/images/menu-vs.png0000644002347300047320000002770711656660331015511 0ustar vonfabpsaclnPNG  IHDR@FtEXtSoftwareAdobe ImageReadyqe</iIDATx}XvR%b16Zb4zEFob&DEE"(("aa| ogY993cj ,XЃ6 ,X` ,X ,Xb` ,1` X`5ťmЮwl~tR<ܽ#uG-869ܸ~ QR:r_h߈m3 ia ['0_}b|u~1RL UR}̙FuTg6 2Un|1Kf D>[o I?N|$#CtYbz7qk .f=|vT뮩9~ %[B=D?>"9Q3/Ϋ^Rƞ.u+7}|89lfL< oKorŋd$]V"B .Vx<p;m^EC-gBսc͓LDR8y^yo˴RXͺ| CvZ%H߷duק˭GHaq!hco'6^#)Uk>Mxde wjsNFG5cs'G%سg~;*גڪ0Ńtmj!0 IOu쑛7),$~wBE2͹ b87kZ Bv90hܰ^$!1­ eVRbŏC{O`逤`eeURl̃F) I +dS*t \6۴^Zc7`85 NBΓo.e(;4w.:i@lcCefMe&٠}=zwwQ)4PH~HbZyl;b%I!UTb0prZ {|?Ǎݰy lڷz0L/O>#^PRϊ̋y7n `H iPiAr|=޾Ar ,-|GyFD\p U1Rŝ'@^Pb.–n_'k̨Y[!j5ıIq!*psS{IROD)O E [)>XcC{a%#\F| U-ASRJ\I+"H :|t. 菙 %8cKqwشdC8j߻w7v%Oœ@R̓38 Ot}:{T{'pБԝq84` :2ҳi(~/.IpiI]ڛ`l|-lOE;Eu,_J ƌ߬EM #ŸbRxjxX.9-&70gRd?~`{#FBJ ~NBM `/ֵdS LF NM_|2ؼm^bJuiկ/(d2UVBqq!$LNЦĄFخuI6Jˆ!TD+Td,9mz R2̅eTk-O{h>Xgl܈hckUU/Lh 9;K??O gc~|+rB$1lyw_ਉj s+!e>9qyx4 Bu|\}IklJPQJy[0@Hu*f!(t?o`KRG J 66P)Ia_e%d޾0b5! *oFAa#}-1EO+ , :wxD51oHcSՓHN_M )PńW)ԩX(VVߋg)*LabP&M+^I PS6LkFM4㜂$&_.=8tMd}zw=ӓS5}ouſ1̄XY)[Vq75#&ޝ)%1$p/9Q#z"5rT7ckLޝ@;HZrЇ36o6D-3kN, GH@Q(?n}𚅅8AUf.'**q@Yy);WᱸV&#2v|dߓ]:yPhjcVrFȡQ^XXBAŕHHrUʈm6Bic@?-毚+ɂF`~FHASRbackJI^7ƔI/g .=v7ɧ#OF/.6ZV+爼vxw0ݮx-]5bJ2'M =']Bͨ4Ғn-qr&(GRQj`uiOΞĠ_d8 ^X}-6Vt+1ы T:#ߧg.p2VIYeO:iȫ4tӸ$5|GPTFiS]7ODCy:jvnw Ψ>ޖ& 83EĀj@TZϞ .&Ĥ@Σ餯%'!`Bs u;E2)e[CPPǤ a;!HޘKYi@J|^(BNV*!R$v{g57qJMVP!U;_/Ÿ?tlӊml\6@;v3XYY|LJ*r|>s$r&jJDsd먀n_k fzi,!]ueĐ'Pk\TuLNYQoFMFӳ?! yj`λD>dY͛Yݣq5|8w 9{,(rĬ 2m/EZN51 JdUfԎ?`iY W 1eI]^ v=lAa M*8`dtL:hQvO ~sxNuYݏНNm:ZP|Mn9U2ŭk1+$rZJ٣[XHq&ÿodࣳiV.UfT(G0VUm'~2^VS/U{OFϱX.^]UJΗ?=%.5mz_[AocxlCou*z΂B4C=X`1|f ,1` X`K ,X`%,X` ,X` ,X ,Xb` ,1` ]e` V1` X`54Jb߮DjIdsQc=dcVB@Rlh/ܹ!aߊ1*owSXbdȟ;UHEZ,fâ78#EatR41`,[]XXs9998P}/圝[k7~%lW٧=,2տw{p3x]^=ϔ7&(iB G c]y,J_2.3=c!wcxH gl0OÌ`CZ62$Rs V; bh' ,*@Q M !afiG8h{)"5jNomwjVFyQll <ԩS>}, IB(R rss.\8h[B ·:zsJ5<>&اTCwť ӡ41,ƒga~xoDקqP`?uO8/썿3X ?NOZs4 AO01]^oqD {/$k-0ȕS`3@t'Fv5_,mÎp &|:V:/}^S-tjudބFcB }fes K rF0D\X2L YEH}1u|e7 gi0͏KN2;e83OfOev+$$d_]j5Fq819r8ww@0.))ä!ʿXԽK#ҥ5DE)Kh 1S׫;Nma^_#!Jx\*i0ϣ !$CRvՙǦCs!qX>#-l>t^bUrFBQvǥ3zL{F \sGR&)$ janykD_@ WB`ഊxP)vl1-c2ӡ** @"SDnG1|tغ*8YCWyEp6>:]@I . .ɼy*%'aL:u"H"5ĐR :@TBL@b@R l(ۈy O&}v&uҷu3j9ʫ@O# )t# ۅ)(eIG}"1`pr4a.㇂Jc|'͘2xРik isTLksu9 xA:Ar<.crss[jgg,##"[[[ vqqnݺAYYݻ7XFa,ۦ9!Z!PidW=2x9^赌:/ H-bmԕaaڤ0o'xH($7AGCyUSP{?OIFoeIωaJdwa'x|&"9XHVXwTe^fir7bT_ Qd_P;L\kJ{>īԗ*&Z靀^SOB !伅f{e<#?wf&V`c!tBhG1Z[[[z!ry͛ǔrxwucL&GH$++o= 93*J's!pڵ ;>kdJPTZC#|$E cƌD>.d1l;W>bwm [ΧPF-ςFHz荰~BV=h4 ŤAIfSn>|RFhTjC1KRIg*!-JIa{m퓂Jbz0nII:1EF 3DmesR0+s PO?b s(gRÄWY/(RR}|IF919COC8w /w$IXn%vG)CxL I)陹?b1p1 (,,TÇ0RNN۷RC=`ХKR^KޭĉFQ=Yyɦ]qķH¼޸\f4n*W*{qe8D?ȤGģՇ>5Ixx 1dDdI!)hȀ %
YOzA&kGaP{Fxr1te2 :YX{͉ tpgiBÈ 69JOK` Zb_aCe?oic˭)0ɳB&#S #z5CBTyďH?lW{k`Tp)׈ՐpnW;΀hL41 +Cut$gϬp07Ǖ 4ZLOeU Dy׆37"F>ۆR ɯ'(%ZJ8n;.9soBBa6#@={6Q;wRyF}vXbCe1TD 9CڗrBk D&{iRP93ፅYމcn~Nwm`%* FҡɁZ:hgtmDv=(_MbQipbԊi ep|'`*\RC'߾_=m΢?ޫAH:g䲟O-|>]-hFsd6T .W#[WW+W_(T>BskmOİ ŦgF`X%,Ou)#ru$^,q0؛!#cǎ^zQ·,,,(b A.b2]j`uiwںZy'u*&!Npy?cV/h(!Drf ʼ"89 G K9hjWw\ fօ_IoBz//(Y1BbT5.,z/ޚZIᛑ/ 9t{y!? )7JkH1Hd Gh$` ?yJ1V6Q w&x_:"*ε01\_TyG)oGTD=yُBC W\ٳ~@00S@B@@1(bЩ9a'N-AYy*&!j_KO<dӨW5,`hmpUiM⬹ m4w' ӂh6'҃[O'2$f )Yl1ts*cW`~cV&qV'TS I|r[gOB `J7usouӎڬV6N f~[h}zH?7ޞB)ֻbK'e WӐx \n?@_~1JsAEE.ɞ0u_Nʆ;SbI?UG>}1+rjcӇ\ ˛ݣ?MջP2ӯ*c\WMl:JMER`tIkbwug~iF|ZNI8)FQTS+c\> z`Ly H F cq `ͿYW@ޏBX#Ou!1_Q:Xzml!97mΎZO<#ZhABqq1eJ~@.WD{Y|roz=wn1L[VxwјfNaqm=?axq Ql'PG<|̸WlHjúС+ԃ^]_)+/"y0K.%߿,qX,ֿDJJJJŋblT!g;4DZH/_jnaWN~]hkчq 7jM*hdtL:h^S-"$1X0n w\54#8`A)ù )8Ss[q'J0Q|A\̓'vl&#d+zVTR8kVGa0p9)TFYQk#~VtCqvsuEԇPKJEU'wfcWH7 &Fppp+kkk?ssst6ͤRiQ 'N`B?rrYsl~O Ǝޙ1f<Kb?V_b'o6%.=TzPU !FaSh8S_+ 34kVł7,X`7Y`K ,X`%,X` ,X` ,X ,`w-6TIENDB`wp-admin/images/menu.png0000644002347300047320000003035711656660332015057 0ustar vonfabpsaclnPNG  IHDR@F pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_F&IDATxTU]/ySKX+]wQ=[DQ ;(6T,DQAa^ w䛝_gΜ9Oۿ{ܤKM6mڴiӦM6mڴiӦM6mڴiӦM6mڴiӦM6mڴiӦMVBÜ5C(WFU4\ WF63X]'V0BhO =@|Ǧwfm /opL\۲So=FTϞ=_BSV2X} (]{ǎ';Vrn?X kn,Jlyrȕ]>c O`B9-9}E CQ?TQ玟Ժ8VegueZikuGrnC\;' >Ioch=NNY8FqF[daKw 8~`m sL%ј[{8N5I}u6УNCNLvd+(Ěˊק.]Ej%f܍4  C{v!:Cά8F깝X 0LgWBu*ɇ-k8v̥A}.Ҷ˴mlφPpkٰq+Ҩ~kr4wmEOg]C4u€$}Z@o- -^Lnݢ'OOOem Q{ I8to۞lE/%JS`PǕB-gfi.BHN~FwmGʹuئ  :>O@aWoI;7J(df`T UWo%og%{u@9NF/@!Q_dj]^q&pu[qThOZ% [mm[֦5sl+'zC3OGt5: >iè3}L!MeZoZV\Iݣ J b[AaqBp I=Q3@K|D.8Gw [Ҝ`֟={B(dm Hd(,ZK[5/#`@ew+H!U hTVx)ӱC$ $'+n*_L_:H u^zR$݌ka 9|` zPe ti֗:AmNp7M7Ѱ $DN_'m&߶oP3ptb0Sr+=Ј٭`sioG!NSsji ⶵ3$M-b9E/(cKn)`(STTyr6E P|􁗔bm {hY$A J `X5.5~Цr Y'!Q @:%,^5} ] s;wRضtg9&܇Ԭ Y{.]JK,iޅ PVJ_-XC6ztܥg)&.bb_ZGPC1TcN!ԣtd}C:߆l2~G[J:|!ںUV[-U|b"m?}DD DGӱK(XG={PsP8x./-jJ5 kOhoa\i4`*V]V 7EӦyIJU R͊UOôTɣෘ| M +tnKlSBQv܅4sVpj} -)ꌨY5607Vv$H]'0t@:eԩ0g˜GsvBTLUKڦ揪`W7V.DQӄPFs|F5iBwB0c~IE*uRN]H4s?"d=x]պSLM:+CIC+)&tbcc:1{6QC=_@!rw'n7|{~% -KBګ;s mHxPFJ8)rzhńQ*(<67XqHAs3mXiԍ6'm1<}x 0&zߓ40F& x7p݊""71JХ -\ܓ\KWV4iD Pe xE0 ' wРS%ʨDݮ+URdR`Z3}* 6CAgӝ3K2t@zlV`Mk?.>YAf&DϒiMTSLYs})s%OM컪?;*g}ْ掮J>t; 9¶rț%r艳'<|^eԅ:G 6 |}{~E`8wU{@!)10`Q4ƐPZrpW~d3ڠ-S[)NG 'g`0U&:LI|' Jͯү}2N5Dz apJ6dZ /_m$zz.[ЍZ-prB3[^p`v$NHb¢Eh!Q'P0`].~,[:^@%?*Ϊ>h?byU7>փ~i(_m!zV,JB{`Hog&k kC 6hR0 b`0_"`A* ?sG4簒)ie9! suւetp!-+?( *٥K[ w½-gyR+ o%``سYޣώ|v&͛SulCM89dTUv?t3THr7JWJ;Q2[FZѺYpc8y qiMd -n2;*?fKB0OR1' ]Mٔ4!!ʟlZ0$'LQBX ?+Qْ9hŊXW\٘%KPx @x?"V;B]V18{}jNNg6nk :lC*T)9lA>15 V]&S ϰeekr1AN=c3TAQ ỳU)C- [*ײՍpzeBȱ`QlW*(LS|PF >U} |lgW*(c,-y~O7BӬ e!DπK qDʖꬱ75UQuN}P(P pɸgXeYx{k ~@5֍8y BJ0Y~V_6lYN 2,q|a)+¡2e-6j(ckgM6@ნ8|0 ‰'Զm16zwXsΥ!QE۽{֭w6$$DСCW^+VזAֹsgx&NH#G>ߐpeV0P||[ Y}cy&JJJ'OӧYG>4 P m6B0hР^/P9zti.BHNNݻw O[nBT3 +}ǎdVZ 6BfVkP~#e`@)gϞ׮ M6!'e˖lN-Qx{.ݻwPFc*Ueڼyxw_LG@ɓq作={6c [l,88~'`?>-X@eS֛n^W m p&pH) I^^^4f=z)^Tŋ*  d G:Bg^QQQ)KlS~QD /Ac 8 祻`@Ȫe@BŐB2$8TDnݻpn͚5B\tl s5k6Al,._6BnΙ3GcD׮]y2d{`8!:EṿGuXb4'fI赦gFt ?<ѫ 0< 8M֦$ob,^X8,n+0im(#Ŀcb&;g&GV `}` r$Hd:ccDŽ. ea[I&}"""K.%Qp`blCR` .=TppS0LI)p<<<H)paL10OW#^uRKM) >)N:%1lgVrV  yfn;3"e2C:eaU`qg i3mڴ gZx <7T@(-bKE묎RxQ5jPݺuf͚"U(a8?!5肜VZTx 9D,2GLg Sဦ*Bo" "< CYTANI߃RA91[7 # X'gn`Z0d1jN<;`"B$jLe- /cD||7YIn_Y8r<`uÇ:*0 }0tpls 1k*'y)VI$kLQj6#x*T xVq9x EDF|:Z*UT*ca.g}DD9L<jC ؔ)S)yz`EIVqr9HK6`pO,"GY@&PHFZ* x0hDŽ(deD:In޸2kCp|r uQJB 98SYy_s[0an9  5FMnC.Ge*"gÜ;wNc;eg2 HS7(N>C(SVOXM+W.ʗ/xw #ѠA^:!@Yb p 3_߻\כ%2"sqS1*Яo$\(H% 8ܼy3J.C& ŔT@"R:0Ff:`xy"8!c6 zm*0wxnRGHT־}uбA* pAfIH`TN?faB R0 s"`> =ys6/4CҥSŤ L ;E:D+- ~H"R1x}vA"te`Lc MYګK۶k.8W mж]۶J>`@a2!Q!`m/" GXG)q~o%j0 5c3{%R.X/'tRj8BV@@b a89 :)S0`]3C VxNN` ʁf TkV p!7m{xʕ˩m%"Ftó2@e xpPNSr+S*0`ApR1[ګC̙16rpS~L|F}\M:lS NAι.)w:YF#=UUy_m508GNe)k pqb~9shfk.qK`0!`R2zH~`Z3 \ (QqpH@xHݼ\d6eQ3 rFuvZ2`^oàL),JB{``0>ԺexB}C5R 9{!5d=n0q >P1%5-yu'V0$:kps1@IaP$1]]_*H+-3Y,tyzr&VjaڠmZ@ʱqaRq9obmy 0(fY_q€*0!5'~6v*?f39J s`2EjJjs([ gY$tQh2yY0B}:+f  㷒q!{6~WZ%l0#ʨ6A[kQ@Yv16q""Rd"inTAQ Q"L.?ct8U~-]k^ 8 D2.^ÇAcPX2 m\7/aٳg<^΃UA9rhg Q* A^!RER5&6*o.Ӎ+ps[X\Ate=V9.VF`@m q,g>s|zl<åYEXXtO¡?Ϥ'zֲ2갍 Rq,r5jȋ}[ 2˸MU @8Zj~)SY #Cc3U&?-NMv2>:+-sc 6TԨf[SVV)V-+1^e,a-bMfNj o/^·|{føF]^F]>Gfc߿+ѩ_^O:u0uBY666oOFrمl;:vxpU  fIb\0Qųtq,zUObL˖F}n]ҭ7geWe(Xؖ^_)mڴiӦM6mڴiӦM6mڴiӦM6mڴiӦM6mڴiӦM6mڴiӖ?#IENDB`wp-admin/images/no.png0000644002347300047320000000143011656660331014514 0ustar vonfabpsaclnPNG  IHDRaIDAT8o?߷?nkiv3K)M71QC?O:cQF4`DD? Fu]}۾=xIsx]^pPTDi jĆ!AEal_* \1qPϹSʀq9 C|>"8" fb>xYIENDB`wp-admin/images/required.gif0000644002347300047320000000007611656660332015707 0ustar vonfabpsaclnGIF89a!, Jgg~{H&;wp-admin/images/resize.gif0000644002347300047320000000010711656660332015363 0ustar vonfabpsaclnGIF89a !, מ˂BmX;wp-admin/images/screen-options-toggle-vs.gif0000644002347300047320000000023011656660332020734 0ustar vonfabpsaclnGIF89a.¾yyyuuuqqq!,.EI8ͻ`(lC:Dw'0N3|ciH,Ȥrl:APg9..(+IENDB`wp-admin/images/sort.gif0000644002347300047320000000006611656660333015056 0ustar vonfabpsaclnGIF89a#-0!, a˨>zR;wp-admin/images/toggle-arrow-rtl.gif0000644002347300047320000000011011656660333017265 0ustar vonfabpsaclnGIF89a%!,a {lE6)9޷#DA;wp-admin/images/toggle-arrow.gif0000644002347300047320000000010711656660334016475 0ustar vonfabpsaclnGIF89a%!,D  :bt1vKh*;wp-admin/images/star.gif0000644002347300047320000000015511656660334015040 0ustar vonfabpsaclnGIF89a! ,>|Q'YU@]Vvº/(7mo9j&nUD9 4Q;wp-admin/images/upload-classic.png0000644002347300047320000000313711656660334017014 0ustar vonfabpsaclnPNG  IHDR\)&IDATxIK\Mﯕ Hp#n Y *jఉ$B5)la [ q||d޽I'0/hC{mp͇` sGn$G9 r*`CCdeeپ|q_-ituu...$x!EŹX644d E :;;>K(mI *Tr#Ϯ!2uDr,<.ceeE\x 2aa)DAuu ɟ`B22&''58N555$j葳v<*—`~#uxxzLۡ)` cXasii4) a lݙʿSUz9!,aun(e>ܞ>}j=) a S?~lӧ*V;q'E!2m{왵֖E*0/hMN 3%Kե3x g擗/_*lTV^^ip| x/$#VWWs577gSM߿sRM*d+ޓOC\\7 Qj SַԖmT4` cXü!]mH4[} 氏G0 sȧ`!Xq`ѡRO=) lIQط^H8CV!"dmI\?hP|%5)^O E})#U "FSUB:"B . .w5LjB_Qa ?4Q&mE1Q 1 KbBʨ""J L:%O|9_)MtW5NLzA*c&=BWap#S7lڌR66e LSm%JbX7gGdRGlgExɲ1TscRě/OE 5;'O"9OE(5"9|]DwE"Ԁ'D ߼PyLmGC>4Xj-~7s~We3E593uq3.;9-'\KNx-l)M '_ߊӠGH_!= s+ayK?YOG|}*"{:/}N>*A(zinVwA/bD e13MTcn% T}uuT_b\,wXjʥ%6^YD2ϕm=k#lyhX*aռP̲5n\ZlIžLb_.Pםƅ̠IENDB`wp-admin/images/wheel.png0000644002347300047320000002672511656660335015226 0ustar vonfabpsaclnPNG  IHDR?tIME2(S-IDATxyEUgf2CBأI ʢ n'Eԋ܋"Ԉʢ,FA+BD@EP@eK@$tW}33gzLӧޥު,e)KYR,eqQނ Be:AOhruӓAh D V0&BҁĠXj$+Q@:W,E`ʻ]0^6m0~0;A3! z1E߯ lHC>/6<` " ̑Y mg TK Y>p}Vs)Y[Bp gJ ð`h'0g>rE}Z}CT Id1"L׾sbk^,d.Gr[S@ ou$sm`n94oI  [(x ،[9mG0 Id\ȱґtpI0.=oksCp/=m(a4sm.y=Ag"y = (_=7 h+aho@~r t]0Yy6H15lOͅl[~ L tV AU^[$^)#TB ?w(Hn E59H v nI3[9\@* j{֔·}o6@7 mokj뀮ZuEIAJ3Swn/3_5 nb!DGW(@ܱ/_D!\z-D z—!' z꬞zB@+ d Q'`SF hCN@ؿBcNdP&[`/apͮ/h7.@'Yuh5DO@ 'yKbx*ld:fxwJX*;$%2%7kPOg ;Z$a VŸG3I ~wAL!oL;(GJ 4@P_\tqK`}o@@өѴl:^пܳjؚPTMHޅb˄J˂$Ip3ϊR C/7>UM|$((D@tnX\f8\vG1M3|{??@a05:}buq#dFAn;7ac؉VD2L-=b GM<0?g3R^!A†W=/X1CQj)W/&1}C5N N#̢,f@?eulḅdӱIwmr$g/~;@.` { E2Es&~$'"RAP0G=g`8:P^+d zy{,I2CiHvG[X̣ts //v 7a0i< ׂķgg53"9[{{> !+C#j?BM09)f] 3R3(@6T§G:vsaN̘d f U-og,g+ZǠϐ=TJ3O-; n-hDR[ OX:|$MF } 8e.4oX\ ~ zWgD5߀ wg{97CVK|mFA`;]>!+_|RT L g8E[bR-]4zds@0&~ l 0`9>γ A_ ";1k8\P~ 0Sj$[[p9ҵW#K+T ol>0ۅ?vjuG6Ƭk#߼{GŸUEb*\{ՠ5*r`0]}[ش  Hn14aCJ?S6DLgERpbo.-S5amZ^gZH F[2>̆vNa.Y8E<#g fOmPa,& _W+XӸ@'8/4ps|gEYI0I+QlA $8Bs܊ZwJػ'ݼeN;$F1K2O Qf (. RZ$c\~BANNBs&k䂡s$S3K`3^H<7*"'|E ^s,; Epr-b,P, g"VX wVeQ)2ilKb#9A `"u}֧Izb-܂b gVkv浶ބ0u TE]ғAQ bq9\LKh*y+51)uo'ڬd$F1XL()`*]%e|J '=1澌 k^3<%2gMsw3-n gi8ՀjK]V^ui:!D?Yyg¬ނqMJOi,C4{4~`10,H'jXe:ھ;ˀ\ -76.i VAd~{O:nxL !Xi8FL&~ fOj&-d!-Y vdHfgޘ[q/*+2$R7~Hn V@8RW[ǁ &8Pq.ML}Z!! }V!08Ƭ,=4_!Ό` +c0\cDyB6y=\bUg,!'U5ш!m އu[c߶u'.s@]Y3CZZL:׆3h>O,MYwq\`e=fɺ}r6ZޛgYO(9;MxCfғq0L_'V ,󼬷^F Ï+ITBぁg4d&E0WC2:A}V{םcK3w”RLrE97)R̥ ?V4S$IZgq6zʭ F< βpk#)ef Ki}[Ў:um]@Pb!cNh<Bǒ @G40]sE4 1^O o եNңB{ـ0ySL#O5hr@pTn"8L@7 ԿlMatuy/Nlҹ!i6p0 L. !~Sv s4T f}Nqg$`0l{ZE Y[""/2C/L:0tAM #1M!l`Z%l`=t&Q&Ȭ{"7xú3>u2#x~+.s84{Τu$,-/k"80kΐ1a肽qq-zFw@Q= c]-˘#hv˘0qN*<7jQ#ZɁ`}8IX0% _]$INڰv@%@%KfKiof 8&f.Rxh+xpi~ Xf \B<3z%P:Y4}kqq^uB'+#-O2f|eia vGLukxg/~vI·}xwaHhԹ_[+ _ Ǿ6sf2:ڻlr~e:@v{hhsk2G4фƣFZ~{bZ}mڡlBobNntN' d-poPC=X!W:޾] 5 lU[-")%#KEZFRjHr-XZt5ا)ڠ!s3n^,mkRGg#^"͐}:$ұsM Z}c zm h (fӧ;5{9ѐ\ <vEqU,pI(#3!KZ/-cR)'%fƿk7a$F]RaX c9I>m?5,pF &x sd ˁ&]7 =( 3Z}P~DaG]wӴHA@䨂`䊔۷yu-Ȕ$pU55i$(ҾiPp_$׎?VWs&2R̩ $i,ZT?".9t,IOV`H`K+:MMB̷v10^7b uu%CCE]~͜GA IEeqS0bੰakɡf.03릟 ,tH,8V1$;3)I̤F5D^]PޙN?iF¬Z۶0hn<ht5ft9W!Y"Ci$E:"ېL,I$iK?UP]W=鄛 az" LOZ i~A9X W}̟F⤥K}ֱkW6t.yIZqH:%bz5LdXlOu[a)fq"!@ְ@ x(${0g5lPhKIIAEIxTtxQUѝoc<=I%Ӂ͕G'oNsZ?C-i7ÐlF!* z/' 6s5!Q]`RM|% PǕE;sp9Ǘ6ڤ{( qG7KaInwfJx0t'1|:MYu>fI >؄PUvܚ!)Y@ ``c efR4s89q2Dk^-ܤ|ڟI0%x 6ߌ3Ȍ§Ny r\YwU7YqK6{GA JzjeLfh~B  ]BIiyG;_ 2B` a郈wz[dRv' Qm1םzV#3)gZ4m,c# Ii X,346;1 1FC#@hQYĴ\2R}VuPDuu[|ƽAցiD&voѤEhX; `h4()Z:չ 1KX"Li,QaVam72g(i*1ʺ& 76p& g\69tҖ)!Si"jw}[RKˠ-4*k̤P e)G]}U3\;BR`]̟YU;l I03~BzNmT>- kfhcR}Fy% e)0QUc!cd, D2&Du0$arV8a0":# % e)hH,$܂c6H^ϒ1n(b c>kQYl.LOa,i! f[V8ab7}N[ +cY r~{S_Q"x>go ,xϢg4 @9@ 0|ei|a:Ccaj?X>ʲ4ZBEZ5A̐@,x9NH F4qղlV4Ag3fk Cl2Z#I{ ,c->C6n$SH-=hzes{ڴ@,qm!r 4հFR_-j(E-K޲/ a3=4jFcnbqjǼGZ%w hX;ppԙtRZMy',axZ^Y6Yսv;,8]{ZB|z3 ݋ja-Eq)MtJ ~ _`?_iX`(sYØ$5-00& :=D)0|eI*px[eq=ٿQ3nЭ=BXv\Bb^hڴI?cY|e f1 "Sr3d08}OR_p$6+|I,u|!,ea9bu6Q\T _,Š,vֱNq̞}`+>AW+MEi?}OcYJ& 4V Ʀ޳?C0.NNj5SCBu KrAW#8d׫t!9x\tR1sӓsK{6دobzDO4w J}!pSb2E Sh2uca]3Pou2vi O"Ņހ9ehH+oP-5pwA P0\ڢnXq(LV~cN7T @$? X_Jp  ?TGhQv%̲ sn5e7K|EG)C~ z[# :3|Q#& ueX$$= ?32BRAr-\~1,/fc9zw$87HhJ05|[ųdY 4'կo]>NwD,{Kib"igs~#~l@& w:X =Y-yf(Q2VBxq9 LEkf `7^C Rn(#MS臠H0l)xꚢͣ`KQL+1ى* `@]5ty / D#uio' O%6$bXrLu T~BӪ٧ykrV3APsHu)-%n:AUbR)͍h1s!:AK<>4P>\+}8T7QDa`F1#e(e"^)!dD>"q{ DC7Ďfc*zCxe~˛ Z`_/DcYY}  PTgOʦ$Xωk\ɉ≑A 9"$J3:\m20 nwnKl$'ֆx҆Tw\NX3ws$Aπow[wŴ,fm[t3l,a!:̦o49e(>=A i[ F'Tx]]9 hqX`4Nَl2q׍M=B;A0 "~&nE?!Щ+ˌ ; W/ ,7' ޺gA΃NE\j3j"O#4WSDŽ-MȐFd Lj3XDsތ{H߸F]!: A襩iZ$ 'Ȭ,m>7<X}n8 N{7ᙓh7激ٵlQ(aX~{2X q([ ǾϐdZdV1>I~y|.KPZGqWϲWg*.(ژ>(NBrPm tiIZ OZD$ga KaݕŒd14`"`sv§yLM\WZrIBIM2 ݀]zA]5:~&ŦCo18#(ajKZ 4|H&`D?q%<q&7& C](d#Q Cd)dV`G+ uP=u(0ԗLJfQߐ\\T<M:l}{"w֎t_aKHnb A1 <`)0xO`n`c0{(%*aIl$Q(Z " Aѽ`aسlK9KiePDHvD2AdDj {,2Dρ~ (+Gj?@ jb-c*0Vb2B2BІ `ym Z Q'D^ ЯC -ClW],e)KYR(!jIENDB`wp-admin/images/white-grad.png0000644002347300047320000000032211656660335016136 0ustar vonfabpsaclnPNG  IHDR~ԽsBIT|d pHYs  ~!tEXtSoftwareMacromedia Fireworks 4.0&'utEXtCreation Time11/17/08luq%IDATxc4.E!v}s :&K4AIENDB`wp-admin/images/white-grad-active.png0000644002347300047320000000033711656660335017415 0ustar vonfabpsaclnPNG  IHDRӠ$tEXtSoftwareAdobe ImageReadyqe<9PLTE=Ť'Yk/IENDB`wp-admin/images/widgets-arrow-vs.gif0000644002347300047320000000032511656660335017313 0ustar vonfabpsaclnGIF89a C]jD^k6Q]9T`7Q]:Ua9S_B]iC^jмɣ!, R2diN⩎zn ,m4.*&)H*<6>G-PH j1@A%H>o:~!;wp-admin/images/widgets-arrow.gif0000644002347300047320000000051611656660335016667 0ustar vonfabpsaclnGIF89a 'RRRSSSVVVWWWXXXYYYZZZ\\\^^^```bbbdddfffhhhiiijjjkkklllnnnppprrrtttvvvwww{{{~~~!', k@iH,O£r\"4ʤTlb-Z xH&f2DjGȲc9d N%u' Q&z Q#C Tr' VDffcfcfcA;wp-admin/images/wordpress-logo.png0000644002347300047320000000443611656660336017104 0ustar vonfabpsaclnPNG  IHDRD tEXtSoftwareAdobe ImageReadyqe<cPLTE\\\$fff™{{{ppp[̷2Mv˭儺i?L4!tRNS!$IDATxٖ: E fL ɲCWU]Oq;$Ŷ%Y8-EEEE@tJ$UL?]&n M+OV^&;=Mqt5$X,e=av[[J [EWE5* [:Ed6UNJjO"z%~Y{ɵa*seņ]Y6Kj{\͆"B/: yVOTI!6?_ӛ,SAWzg#ݠKЫp 'F+=kLc2őDl]2#igXR^] h>1Y{}ﶔUFT^Ž\j]w{}߾?땮s7SDY>{.`VO$0w3PI 6G2= #3 >QFj4V|:Xw0e3wX3&@7^=S|+n@gbݠ;fW#y:߼CË>5YԻm;=V"~sxgooPjwg;);V0k!w"_0"^v2N'뼆n=L{~e\4N^nv% b@I#7oEX_}]gƽlx'҃O&NW @'@KBHHi͞/@s^ݓw0{9o஼1Ũi$tWIA9ob #nӻ5䝤;zN ?</=1}suST7po+YbtT~z W>{^ngi ]r)Z3볧2@o>^@=#@Gߌ@JяЧutgvBRJ1 Do d{蘭 q߻AGoN{]Nn>g%w bVT+ G/"WK)^:b+T~GWgzzC=}}dbxWyN v֢[iHV`q“G-}*>]4z]g//qp +ayF{J)0 >Aŗ R~דݘtp]2W{*P ]}pu WҶes>Q9%˕fO=@t\Bѻ;(ks֠Is"F%Nk )F5Q7t♼9usl@lAHx2u wX۩Vy.Mf~JzjUɰuԸW|L .r{E͊ycttW'-b lN#OJxTi>m,_\_a6 d#x1\a%۴/xx-#q)=Ӓ6O 沠 g4V\@{3S9Lw~O6O}q{YwAbɍV,Wg#WepwRP(4n *EP rLD^_̓ρW sϏ#z |pӁwIL)zI^l8] ᨑ]|"#`sLh*7P`ޢ:\rrEv)ccY7A<~`?}+h^6+O-i]eսO{ Ί5LFv)sx486hE q@?sd&@rK܂'XqW½֓V|_X3(Sm=_NU(hty}?=^\(=iS͸Ѽ' flܴ9..PR̸]tIf,NP*!i :~8:Z~f2igQv\*O6׶M=7f2y%9+Ǟ xᙶ/h ^]/y &' !-18~ۆ7.ϻpj}z|C/y*)A*.\9Vnkߋyb(E ۫fq8=vMSG{nLR?-K޾uZ@(8rwB`ٳM Ǿ\r;ot 9QDFf8} 8qF A$_d36^ٽuڰUy?| BLmt/@c9fݛ8YWU# 3iAzykಙbd|n8feacf8 yr^jKaK?r~32x<z` :k{5f8A|ϰhx1ȥLeO F#qkK?qiW~t@نs/n+CPR,)N@ny28~[LCeq6sRe7 "@ű΀<3kxusUp]i^/,;  _m_WfhzHdb {+ן{x3k꼌aj2txY\.*0CS&<編XI `lgyr]  T%͍-]\&.\Ag{7ي"Xm:Uf \>SܲCuSFty/mCAYAdD,"եW%+s ʍ:7%\fP%bfRqbƃ )C#_9ZNM2LOX;չWbԁ]?NSN.XY׊L Yl[YT`lCø a|Ohn¸;yB!;YW+՝1=)OK E3Zx}qS~'0e 6/<=hwܣ{Hf?__TNBeKA<+]=r0kÝ[>?ctqfv y3zLR B\}Zu3pb ]u@Cs)_Mxg]3Y};5a”M1~p 9zaGKtxחpunz[7VOlZ0tP!-`8\ u]fovsx/h gJLt2ؔR2֩oyl7Ij+}Fo>vZ^F㴪8?ڄr)Ovd^O>(wI onSdjX*n{+I pM\1v%t/2"$zk[qq{B!Z$R/]8g~\3+\IENDB`wp-admin/images/wp-logo.png0000644002347300047320000000431311656660336015474 0ustar vonfabpsaclnPNG  IHDR szztEXtSoftwareAdobe ImageReadyqe<mIDATxڤWkpe>{f/m6 t҆40֎HM/38LAa/gDAQj+`(B msc&6id/{~)Jwow\s2 eďt^lݒ=~O>Z^`+_d27JK S慶FV[, htr98ae%X 0d2:\7]G(U*ߋb-S2 F#i4;HL~՘N_'aHd>Sa?|Ȩh t%t"C+Ir2Kݻ}0(g 1hf[썝v_;p+w_z)PD$L&y.2-m龯"VKo?}F [sw>:hn)zwS4yeD*BJ!JwO~ FGB^s/}:H=kH5 ɤ3ٝH=L^0v_ǽd݌ÒXŢD;_=DBH&=cPB*`%; $q{%b݌X*<:eJ}J0(rE8?}b~Mx/̓ T#PS=_PWRI'~miB]SO!v2FSp ņ|:O.ɕ r"-ۺڸrw---%T7=<(dx)>TLh,JG5xZZ[o1\\CCRHP>ɱMb79οMd?0 gfݏwf$ 6MD?2CTnLMjyUb^nB5v@1c1&cN4YG i Ր'D6 dqffxV/-}j:*C)01 x2-IQW.ʔlQ!;/L6oނp'DkY<f`={!Q`6{{8Y'F嘘LёUFhʅW!͉9k=-lj3gW{RٛHRJaaS aV˵BNC y}VT c/Ó8Cv1kw?f2MԹRs4NàbkL&qz<)3ܜ\[TU޻:^_aH =N㒔.>k|\y`F~ ylL1r1K7\|N vUbC]u =:ry?scT: JeK(s=Mc|Թ8ʖ -x_L*,V~@y 1*A*8&N㱸þoQE%?ofgh/&^C4y1O2B1ƪ%1!SU :?ڟ'H@yCO[*PK-(iRŅ|o@40a\u]\؄DFT@ 4}؅"TSU '0l 1LI1X d &"LF.hCŐ <`S|/1l086ƢCE+d2 haCd2pp 4!T|ajq-@Sh>"_$1C:(A  C0,,TC J0>dbQ'̀  C.8h&2".=T` }?Pq6h2 8P02f ́ .@D4r)|K אr!x1;5\!hxb!5`)"}d>x ,s DP,Ċ >|qc|r $\ 1\*F R40A4B)wQD %p3lj:t4Mu1-Dcn4  Ebg^;ĻX JF  MK  eCHB  CFK EKLJdNEMCHLCA!  ,@p<3lj8Gјl4M 'HLBñ7B  X,䲂00,7   XC fCZYBK VLWJBZ yMCEGIKMA!  ,@p<3lj8Bl4M GXL^ 0."p<2fa( Kt[ XC YB K K   VBZPdOMEGICA!  ,@p<3lj8Ip4Mh4 E#ñ7`"#< dhP,7WO XC fCZBZhN hs K dK  ϨPZ |MBEGICA!  ,@p<3lj:!p4Mf: cn6H]( 3H&cN^puc XC BeCV BPN  K Vd K F r VV c MCEGICA!  ,@p<3lj: 2p4M CH XM v8̆رPONX48Eve PVXC gC ^uY B  K [  K js Z V MCEGICA!  ,@p<3lj:dB@CL$h^ xh6f~tl&  v NeC X wC o KY[  [ p EBY  MCEGIKMA!  ,@p<3lj:K 4-cQ& d +@4xd8fw zTEVCdBW y TN P  K Y Ze q X  w p MrGIKMA!  ,@p<3lj6t4M R40v+PEäP& qd)BV NdCB XCy  EE  L  O MsGIKMA! ,@p<3lj6D@t4M b  7 P2e!n p E rO XCOfCB B EE  e K O  ZMEGIKMA!  ,@pH,% A@0PÄCD hcH,PP=e0EpBO j B OEB ZB NEF A!  ,@p<3lj6Eal4M Ak. (Fa0(l7 WO XC eC YBO  O L BZp[MEGIKMA;wp-admin/images/xit.gif0000644002347300047320000000026511656660337014700 0ustar vonfabpsaclnGIF89a !, bb0EJ",d H00KA(L&BB0DR!$ఓgJVsPH4"sKAn೏1*NJՒP,  ;wp-admin/images/wpspin_light.gif0000644002347300047320000000422111656660337016577 0ustar vonfabpsaclnGIF89aŽŽ{{{{{{sssss! NETSCAPE2.0! 4,@)d2V)2lv`:jHL B"jK&J%$h$˄/E#u0!!/ ~%/*!M!% .11M111sC3/+C!0**.%&1Q2&&)Js,/#&34F#yq4Z/1eN1*#&+3XMBE.HLCA!4,@)d2V)2lvbI":Ɗ5i,CCjKGc L%$6y<")D# /EQ0!v!/ ~%/*!M!& .11M11/,C!%%&Ov3%s/{"b04F##&&#/q4Z/#*1eN2*,3XMBE.H.KMA! 4,y@pH,iFc: -2xYItJ5-ى&4dbČff 0w4|NxB!.F&z4*#2D/42##D/C/#&&*D0*I &NvNEA!4,@)d2V)2lvba:%@Fjd n4mˤ-+LH$0E)1!`!0} %/#,!M!).WOM1 11#2C1/$##/C!& .%*&2`/4%2#&0#/4&|%r4ZP)&eN3,* /XMBE.HLCA!4,t@PX&pId,ljte: -&6dڨb&F4ܴFb 4&x4 x4,*Bt%w% B04J^ )n0 KA!4,w@&2pI: ҂q1GRLVC,މpe211l3 ͤri t)4,4*tw) j./LB1u 0B#L&  4BA! 4,r@pH,WNg2M28MPijPbh&cf2) U6LsF4 neF0 #B/4is Dn ME z{{CA!4,@)d2V)2lvfhdR:*2yl^T ɸJ AȘ^Ċ3!!1}&g #!M!,.10M2yC1/ &C!*o /0#%/4&00*4%& *p4Z) +dN0#MCE.HoLCA!4,w@SL&k4 cEj<k`z?-# ^L٨16%еɀhzC4Uz2 ,BOz1&B O4)CL +zB!LA!4,o@$R PKsir U%FCaY*M16A'z|4wSKh 40KM0 Z41+C) llyrBA! 4,x@pH,i yi R4d0P#0%kTLÎ0P&1B ~HG#B uFkoB! F!D 1BXC.E,NG%ODA! 4,@)d2V)2lv`ȼ:J0L jK)  F%H׫d1Eu/!!/4J/ )!M*.1 1M3,&)11C&1/*C&.%#1Q2##d%1,.#24%*˘#{BZ,eN1&#*2XMBE.HLCA;wp-admin/images/yes.png0000644002347300047320000000114411656660337014710 0ustar vonfabpsaclnPNG  IHDRa+IDAT8]HSa98[jDb4JֈĺK$( ҺꪏnBȆ6-Ksu,)6t45u;{Dl\'ZHtPn_2gVvv!c $kD2d߭Í:%!' p?x< _Fr'* a}=2>WU忉Op1Y/ &f*ԒLG{`C!Փ?%:~4ހ^-! G#hlD}Q.KեզŤ'YqWS=tHYs䲭= :B#$&8pL8 ?,QOѪsg/=poL;A.KJ4Ovj/1b tMIK[ؑbx Wj"o!M`2t\}̩\?P<OJqv=vYobf$RWqjyxQ2{K§Y_+5K RwH9]doi:R6dI?IENDB`wp-admin/import.php0000644002347300047320000001414711656660315014163 0ustar vonfabpsacln' . __('This screen lists links to plugins to import data from blogging/content management platforms. Choose the platform you want to import from, and click Install Now when you are prompted in the popup window. If your platform is not listed, click the link to search the plugin directory for other importer plugins to see if there is one for your platform.') . '

' . '

' . __('In previous versions of WordPress, all the importers were built-in, but they have been turned into plugins as of version 3.0 since most people only use them once or infrequently.') . '

' . '

' . __('For more information:') . '

' . '

' . __('Documentation on Import') . '

' . '

' . __('Support Forums') . '

' ); $popular_importers = array(); if ( current_user_can('install_plugins') ) $popular_importers = array( 'blogger' => array( __('Blogger'), __('Install the Blogger importer to import posts, comments, and users from a Blogger blog.'), 'install' ), 'wpcat2tag' => array(__('Categories and Tags Converter'), __('Install the category/tag converter to convert existing categories to tags or tags to categories, selectively.'), 'install', 'wp-cat2tag' ), 'livejournal' => array( __( 'LiveJournal' ), __( 'Install the LiveJournal importer to import posts from LiveJournal using their API.' ), 'install' ), 'movabletype' => array( __('Movable Type and TypePad'), __('Install the Movable Type importer to import posts and comments from a Movable Type or TypePad blog.'), 'install', 'mt' ), 'opml' => array( __('Blogroll'), __('Install the blogroll importer to import links in OPML format.'), 'install' ), 'rss' => array( __('RSS'), __('Install the RSS importer to import posts from an RSS feed.'), 'install' ), 'wordpress' => array( 'WordPress', __('Install the WordPress importer to import posts, pages, comments, custom fields, categories, and tags from a WordPress export file.'), 'install' ) ); if ( ! empty( $_GET['invalid'] ) && !empty($popular_importers[$_GET['invalid']][3]) ) { wp_redirect( admin_url('import.php?import=' . $popular_importers[$_GET['invalid']][3]) ); exit; } add_thickbox(); wp_enqueue_script( 'plugin-install' ); wp_admin_css( 'plugin-install' ); require_once ('admin-header.php'); $parent_file = 'tools.php'; ?>

%s importer is invalid or is not installed.'), esc_html( $_GET['invalid'] ) ); ?>

$pop_data ) { if ( isset($importers[$pop_importer] ) ) continue; if ( isset( $pop_data[3] ) && isset( $importers[ $pop_data[3] ] ) ) continue; $importers[$pop_importer] = $popular_importers[$pop_importer]; } if (empty ($importers)) { echo '

'.__('No importers are available.').'

'; // TODO: make more helpful } else { uasort($importers, create_function('$a, $b', 'return strcmp($a[0], $b[0]);')); ?> $data) { $style = ('class="alternate"' == $style || 'class="alternate active"' == $style) ? '' : 'alternate'; $action = ''; if ( 'install' == $data[2] ) { $plugin_slug = $id . '-importer'; if ( file_exists( WP_PLUGIN_DIR . '/' . $plugin_slug ) ) { // Looks like Importer is installed, But not active $plugins = get_plugins( '/' . $plugin_slug ); if ( !empty($plugins) ) { $keys = array_keys($plugins); $plugin_file = $plugin_slug . '/' . $keys[0]; $action = '' . $data[0] . ''; } } if ( empty($action) ) $action = '' . $data[0] . ''; } else { $action = "{$data[0]}"; } if ($style != '') $style = 'class="'.$style.'"'; echo " "; } ?>
$action {$data[1]}
' . sprintf( __('If the importer you need is not listed, search the plugins directory to see if an importer is available.'), esc_url( network_admin_url( 'plugin-install.php?tab=search&type=tag&s=importer' ) ) ) . '

'; ?>
wp-admin/includes/0000755002347300047320000000000011656660361013740 5ustar vonfabpsaclnwp-admin/includes/admin.php0000644002347300047320000000373011656660340015541 0ustar vonfabpsacln wp-admin/includes/bookmark.php0000644002347300047320000001531411656660340016257 0ustar vonfabpsaclnlink_url = esc_url( $_GET['linkurl'] ); else $link->link_url = ''; if ( isset( $_GET['name'] ) ) $link->link_name = esc_attr( $_GET['name'] ); else $link->link_name = ''; $link->link_visible = 'Y'; return $link; } /** * Delete link specified from database * * @since 2.0.0 * * @param int $link_id ID of the link to delete * @return bool True */ function wp_delete_link( $link_id ) { global $wpdb; do_action( 'delete_link', $link_id ); wp_delete_object_term_relationships( $link_id, 'link_category' ); $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->links WHERE link_id = %d", $link_id ) ); do_action( 'deleted_link', $link_id ); clean_bookmark_cache( $link_id ); return true; } /** * Retrieves the link categories associated with the link specified. * * @since 2.1.0 * * @param int $link_id Link ID to look up * @return array The requested link's categories */ function wp_get_link_cats( $link_id = 0 ) { $cats = wp_get_object_terms( $link_id, 'link_category', array('fields' => 'ids') ); return array_unique( $cats ); } /** * Retrieve link data based on ID. * * @since 2.0.0 * * @param int $link_id ID of link to retrieve * @return object Link for editing */ function get_link_to_edit( $link_id ) { return get_bookmark( $link_id, OBJECT, 'edit' ); } /** * This function inserts/updates links into/in the database. * * @since 2.0.0 * * @param array $linkdata Elements that make up the link to insert. * @param bool $wp_error Optional. If true return WP_Error object on failure. * @return int|WP_Error Value 0 or WP_Error on failure. The link ID on success. */ function wp_insert_link( $linkdata, $wp_error = false ) { global $wpdb; $defaults = array( 'link_id' => 0, 'link_name' => '', 'link_url' => '', 'link_rating' => 0 ); $linkdata = wp_parse_args( $linkdata, $defaults ); $linkdata = sanitize_bookmark( $linkdata, 'db' ); extract( stripslashes_deep( $linkdata ), EXTR_SKIP ); $update = false; if ( !empty( $link_id ) ) $update = true; if ( trim( $link_name ) == '' ) { if ( trim( $link_url ) != '' ) { $link_name = $link_url; } else { return 0; } } if ( trim( $link_url ) == '' ) return 0; if ( empty( $link_rating ) ) $link_rating = 0; if ( empty( $link_image ) ) $link_image = ''; if ( empty( $link_target ) ) $link_target = ''; if ( empty( $link_visible ) ) $link_visible = 'Y'; if ( empty( $link_owner ) ) $link_owner = get_current_user_id(); if ( empty( $link_notes ) ) $link_notes = ''; if ( empty( $link_description ) ) $link_description = ''; if ( empty( $link_rss ) ) $link_rss = ''; if ( empty( $link_rel ) ) $link_rel = ''; // Make sure we set a valid category if ( ! isset( $link_category ) || 0 == count( $link_category ) || !is_array( $link_category ) ) { $link_category = array( get_option( 'default_link_category' ) ); } if ( $update ) { if ( false === $wpdb->update( $wpdb->links, compact('link_url', 'link_name', 'link_image', 'link_target', 'link_description', 'link_visible', 'link_rating', 'link_rel', 'link_notes', 'link_rss'), compact('link_id') ) ) { if ( $wp_error ) return new WP_Error( 'db_update_error', __( 'Could not update link in the database' ), $wpdb->last_error ); else return 0; } } else { if ( false === $wpdb->insert( $wpdb->links, compact('link_url', 'link_name', 'link_image', 'link_target', 'link_description', 'link_visible', 'link_owner', 'link_rating', 'link_rel', 'link_notes', 'link_rss') ) ) { if ( $wp_error ) return new WP_Error( 'db_insert_error', __( 'Could not insert link into the database' ), $wpdb->last_error ); else return 0; } $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 ); clean_bookmark_cache( $link_id ); return $link_id; } /** * Update link with the specified link categories. * * @since 2.1.0 * * @param int $link_id ID of link to update * @param array $link_categories Array of categories to */ function wp_set_link_cats( $link_id = 0, $link_categories = array() ) { // 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_map( 'intval', $link_categories ); $link_categories = array_unique( $link_categories ); wp_set_object_terms( $link_id, $link_categories, 'link_category' ); clean_bookmark_cache( $link_id ); } /** * Update a link in the database. * * @since 2.0.0 * * @param array $linkdata Link data to update. * @return int|WP_Error Value 0 or WP_Error on failure. The updated link ID on success. */ function wp_update_link( $linkdata ) { $link_id = (int) $linkdata['link_id']; $link = get_bookmark( $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 ); } ?> wp-admin/includes/class-ftp-sockets.php0000644002347300047320000002054011656660341020015 0ustar vonfabpsacln__construct($verb, $le); } function __construct($verb=FALSE, $le=FALSE) { parent::__construct(true, $verb, $le); } // // // function _settimeout($sock) { if(!@socket_set_option($sock, SOL_SOCKET, SO_RCVTIMEO, array("sec"=>$this->_timeout, "usec"=>0))) { $this->PushError('_connect','socket set receive timeout',socket_strerror(socket_last_error($sock))); @socket_close($sock); return FALSE; } if(!@socket_set_option($sock, SOL_SOCKET , SO_SNDTIMEO, array("sec"=>$this->_timeout, "usec"=>0))) { $this->PushError('_connect','socket set send timeout',socket_strerror(socket_last_error($sock))); @socket_close($sock); return FALSE; } return true; } function _connect($host, $port) { $this->SendMSG("Creating socket"); if(!($sock = @socket_create(AF_INET, SOCK_STREAM, SOL_TCP))) { $this->PushError('_connect','socket create failed',socket_strerror(socket_last_error($sock))); return FALSE; } if(!$this->_settimeout($sock)) return FALSE; $this->SendMSG("Connecting to \"".$host.":".$port."\""); if (!($res = @socket_connect($sock, $host, $port))) { $this->PushError('_connect','socket connect failed',socket_strerror(socket_last_error($sock))); @socket_close($sock); return FALSE; } $this->_connected=true; return $sock; } function _readmsg($fnction="_readmsg"){ if(!$this->_connected) { $this->PushError($fnction,'Connect first'); return FALSE; } $result=true; $this->_message=""; $this->_code=0; $go=true; do { $tmp=@socket_read($this->_ftp_control_sock, 4096, PHP_BINARY_READ); if($tmp===false) { $go=$result=false; $this->PushError($fnction,'Read failed', socket_strerror(socket_last_error($this->_ftp_control_sock))); } else { $this->_message.=$tmp; $go = !preg_match("/^([0-9]{3})(-.+\\1)? [^".CRLF."]+".CRLF."$/Us", $this->_message, $regs); } } while($go); if($this->LocalEcho) echo "GET < ".rtrim($this->_message, CRLF).CRLF; $this->_code=(int)$regs[1]; return $result; } function _exec($cmd, $fnction="_exec") { if(!$this->_ready) { $this->PushError($fnction,'Connect first'); return FALSE; } if($this->LocalEcho) echo "PUT > ",$cmd,CRLF; $status=@socket_write($this->_ftp_control_sock, $cmd.CRLF); if($status===false) { $this->PushError($fnction,'socket write failed', socket_strerror(socket_last_error($this->stream))); return FALSE; } $this->_lastaction=time(); if(!$this->_readmsg($fnction)) return FALSE; return TRUE; } function _data_prepare($mode=FTP_ASCII) { if(!$this->_settype($mode)) return FALSE; $this->SendMSG("Creating data socket"); $this->_ftp_data_sock = @socket_create(AF_INET, SOCK_STREAM, SOL_TCP); if ($this->_ftp_data_sock < 0) { $this->PushError('_data_prepare','socket create failed',socket_strerror(socket_last_error($this->_ftp_data_sock))); return FALSE; } if(!$this->_settimeout($this->_ftp_data_sock)) { $this->_data_close(); return FALSE; } if($this->_passive) { if(!$this->_exec("PASV", "pasv")) { $this->_data_close(); return FALSE; } if(!$this->_checkCode()) { $this->_data_close(); return FALSE; } $ip_port = explode(",", ereg_replace("^.+ \\(?([0-9]{1,3},[0-9]{1,3},[0-9]{1,3},[0-9]{1,3},[0-9]+,[0-9]+)\\)?.*".CRLF."$", "\\1", $this->_message)); $this->_datahost=$ip_port[0].".".$ip_port[1].".".$ip_port[2].".".$ip_port[3]; $this->_dataport=(((int)$ip_port[4])<<8) + ((int)$ip_port[5]); $this->SendMSG("Connecting to ".$this->_datahost.":".$this->_dataport); if(!@socket_connect($this->_ftp_data_sock, $this->_datahost, $this->_dataport)) { $this->PushError("_data_prepare","socket_connect", socket_strerror(socket_last_error($this->_ftp_data_sock))); $this->_data_close(); return FALSE; } else $this->_ftp_temp_sock=$this->_ftp_data_sock; } else { if(!@socket_getsockname($this->_ftp_control_sock, $addr, $port)) { $this->PushError("_data_prepare","can't get control socket information", socket_strerror(socket_last_error($this->_ftp_control_sock))); $this->_data_close(); return FALSE; } if(!@socket_bind($this->_ftp_data_sock,$addr)){ $this->PushError("_data_prepare","can't bind data socket", socket_strerror(socket_last_error($this->_ftp_data_sock))); $this->_data_close(); return FALSE; } if(!@socket_listen($this->_ftp_data_sock)) { $this->PushError("_data_prepare","can't listen data socket", socket_strerror(socket_last_error($this->_ftp_data_sock))); $this->_data_close(); return FALSE; } if(!@socket_getsockname($this->_ftp_data_sock, $this->_datahost, $this->_dataport)) { $this->PushError("_data_prepare","can't get data socket information", socket_strerror(socket_last_error($this->_ftp_data_sock))); $this->_data_close(); return FALSE; } if(!$this->_exec('PORT '.str_replace('.',',',$this->_datahost.'.'.($this->_dataport>>8).'.'.($this->_dataport&0x00FF)), "_port")) { $this->_data_close(); return FALSE; } if(!$this->_checkCode()) { $this->_data_close(); return FALSE; } } return TRUE; } function _data_read($mode=FTP_ASCII, $fp=NULL) { $NewLine=$this->_eol_code[$this->OS_local]; if(is_resource($fp)) $out=0; else $out=""; if(!$this->_passive) { $this->SendMSG("Connecting to ".$this->_datahost.":".$this->_dataport); $this->_ftp_temp_sock=socket_accept($this->_ftp_data_sock); if($this->_ftp_temp_sock===FALSE) { $this->PushError("_data_read","socket_accept", socket_strerror(socket_last_error($this->_ftp_temp_sock))); $this->_data_close(); return FALSE; } } while(($block=@socket_read($this->_ftp_temp_sock, $this->_ftp_buff_size, PHP_BINARY_READ))!==false) { if($block==="") break; if($mode!=FTP_BINARY) $block=preg_replace("/\r\n|\r|\n/", $this->_eol_code[$this->OS_local], $block); if(is_resource($fp)) $out+=fwrite($fp, $block, strlen($block)); else $out.=$block; } return $out; } function _data_write($mode=FTP_ASCII, $fp=NULL) { $NewLine=$this->_eol_code[$this->OS_local]; if(is_resource($fp)) $out=0; else $out=""; if(!$this->_passive) { $this->SendMSG("Connecting to ".$this->_datahost.":".$this->_dataport); $this->_ftp_temp_sock=socket_accept($this->_ftp_data_sock); if($this->_ftp_temp_sock===FALSE) { $this->PushError("_data_write","socket_accept", socket_strerror(socket_last_error($this->_ftp_temp_sock))); $this->_data_close(); return false; } } if(is_resource($fp)) { while(!feof($fp)) { $block=fread($fp, $this->_ftp_buff_size); if(!$this->_data_write_block($mode, $block)) return false; } } elseif(!$this->_data_write_block($mode, $fp)) return false; return true; } function _data_write_block($mode, $block) { if($mode!=FTP_BINARY) $block=preg_replace("/\r\n|\r|\n/", $this->_eol_code[$this->OS_remote], $block); do { if(($t=@socket_write($this->_ftp_temp_sock, $block))===FALSE) { $this->PushError("_data_write","socket_write", socket_strerror(socket_last_error($this->_ftp_temp_sock))); $this->_data_close(); return FALSE; } $block=substr($block, $t); } while(!empty($block)); return true; } function _data_close() { @socket_close($this->_ftp_temp_sock); @socket_close($this->_ftp_data_sock); $this->SendMSG("Disconnected data from remote host"); return TRUE; } function _quit() { if($this->_connected) { @socket_close($this->_ftp_control_sock); $this->_connected=false; $this->SendMSG("Socket closed"); } } } ?> wp-admin/includes/class-ftp-pure.php0000644002347300047320000001256111656660341017321 0ustar vonfabpsacln__construct($verb, $le); } function __construct($verb=FALSE, $le=FALSE) { parent::__construct(false, $verb, $le); } // // // function _settimeout($sock) { if(!@stream_set_timeout($sock, $this->_timeout)) { $this->PushError('_settimeout','socket set send timeout'); $this->_quit(); return FALSE; } return TRUE; } function _connect($host, $port) { $this->SendMSG("Creating socket"); $sock = @fsockopen($host, $port, $errno, $errstr, $this->_timeout); if (!$sock) { $this->PushError('_connect','socket connect failed', $errstr." (".$errno.")"); return FALSE; } $this->_connected=true; return $sock; } function _readmsg($fnction="_readmsg"){ if(!$this->_connected) { $this->PushError($fnction, 'Connect first'); return FALSE; } $result=true; $this->_message=""; $this->_code=0; $go=true; do { $tmp=@fgets($this->_ftp_control_sock, 512); if($tmp===false) { $go=$result=false; $this->PushError($fnction,'Read failed'); } else { $this->_message.=$tmp; if(preg_match("/^([0-9]{3})(-(.*[".CRLF."]{1,2})+\\1)? [^".CRLF."]+[".CRLF."]{1,2}$/", $this->_message, $regs)) $go=false; } } while($go); if($this->LocalEcho) echo "GET < ".rtrim($this->_message, CRLF).CRLF; $this->_code=(int)$regs[1]; return $result; } function _exec($cmd, $fnction="_exec") { if(!$this->_ready) { $this->PushError($fnction,'Connect first'); return FALSE; } if($this->LocalEcho) echo "PUT > ",$cmd,CRLF; $status=@fputs($this->_ftp_control_sock, $cmd.CRLF); if($status===false) { $this->PushError($fnction,'socket write failed'); return FALSE; } $this->_lastaction=time(); if(!$this->_readmsg($fnction)) return FALSE; return TRUE; } function _data_prepare($mode=FTP_ASCII) { if(!$this->_settype($mode)) return FALSE; if($this->_passive) { if(!$this->_exec("PASV", "pasv")) { $this->_data_close(); return FALSE; } if(!$this->_checkCode()) { $this->_data_close(); return FALSE; } $ip_port = explode(",", ereg_replace("^.+ \\(?([0-9]{1,3},[0-9]{1,3},[0-9]{1,3},[0-9]{1,3},[0-9]+,[0-9]+)\\)?.*".CRLF."$", "\\1", $this->_message)); $this->_datahost=$ip_port[0].".".$ip_port[1].".".$ip_port[2].".".$ip_port[3]; $this->_dataport=(((int)$ip_port[4])<<8) + ((int)$ip_port[5]); $this->SendMSG("Connecting to ".$this->_datahost.":".$this->_dataport); $this->_ftp_data_sock=@fsockopen($this->_datahost, $this->_dataport, $errno, $errstr, $this->_timeout); if(!$this->_ftp_data_sock) { $this->PushError("_data_prepare","fsockopen fails", $errstr." (".$errno.")"); $this->_data_close(); return FALSE; } else $this->_ftp_data_sock; } else { $this->SendMSG("Only passive connections available!"); return FALSE; } return TRUE; } function _data_read($mode=FTP_ASCII, $fp=NULL) { if(is_resource($fp)) $out=0; else $out=""; if(!$this->_passive) { $this->SendMSG("Only passive connections available!"); return FALSE; } while (!feof($this->_ftp_data_sock)) { $block=fread($this->_ftp_data_sock, $this->_ftp_buff_size); if($mode!=FTP_BINARY) $block=preg_replace("/\r\n|\r|\n/", $this->_eol_code[$this->OS_local], $block); if(is_resource($fp)) $out+=fwrite($fp, $block, strlen($block)); else $out.=$block; } return $out; } function _data_write($mode=FTP_ASCII, $fp=NULL) { if(is_resource($fp)) $out=0; else $out=""; if(!$this->_passive) { $this->SendMSG("Only passive connections available!"); return FALSE; } if(is_resource($fp)) { while(!feof($fp)) { $block=fread($fp, $this->_ftp_buff_size); if(!$this->_data_write_block($mode, $block)) return false; } } elseif(!$this->_data_write_block($mode, $fp)) return false; return TRUE; } function _data_write_block($mode, $block) { if($mode!=FTP_BINARY) $block=preg_replace("/\r\n|\r|\n/", $this->_eol_code[$this->OS_remote], $block); do { if(($t=@fwrite($this->_ftp_data_sock, $block))===FALSE) { $this->PushError("_data_write","Can't write to socket"); return FALSE; } $block=substr($block, $t); } while(!empty($block)); return true; } function _data_close() { @fclose($this->_ftp_data_sock); $this->SendMSG("Disconnected data from remote host"); return TRUE; } function _quit($force=FALSE) { if($this->_connected or $force) { @fclose($this->_ftp_control_sock); $this->_connected=false; $this->SendMSG("Socket closed"); } } } ?> wp-admin/includes/class-ftp.php0000644002347300047320000006420411656660341016351 0ustar vonfabpsacln__construct($port_mode); } function __construct($port_mode=FALSE, $verb=FALSE, $le=FALSE) { $this->LocalEcho=$le; $this->Verbose=$verb; $this->_lastaction=NULL; $this->_error_array=array(); $this->_eol_code=array(FTP_OS_Unix=>"\n", FTP_OS_Mac=>"\r", FTP_OS_Windows=>"\r\n"); $this->AuthorizedTransferMode=array(FTP_AUTOASCII, FTP_ASCII, FTP_BINARY); $this->OS_FullName=array(FTP_OS_Unix => 'UNIX', FTP_OS_Windows => 'WINDOWS', FTP_OS_Mac => 'MACOS'); $this->AutoAsciiExt=array("ASP","BAT","C","CPP","CSS","CSV","JS","H","HTM","HTML","SHTML","INI","LOG","PHP3","PHTML","PL","PERL","SH","SQL","TXT"); $this->_port_available=($port_mode==TRUE); $this->SendMSG("Staring FTP client class".($this->_port_available?"":" without PORT mode support")); $this->_connected=FALSE; $this->_ready=FALSE; $this->_can_restore=FALSE; $this->_code=0; $this->_message=""; $this->_ftp_buff_size=4096; $this->_curtype=NULL; $this->SetUmask(0022); $this->SetType(FTP_AUTOASCII); $this->SetTimeout(30); $this->Passive(!$this->_port_available); $this->_login="anonymous"; $this->_password="anon@ftp.com"; $this->_features=array(); $this->OS_local=FTP_OS_Unix; $this->OS_remote=FTP_OS_Unix; $this->features=array(); if(strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') $this->OS_local=FTP_OS_Windows; elseif(strtoupper(substr(PHP_OS, 0, 3)) === 'MAC') $this->OS_local=FTP_OS_Mac; } // // // function parselisting($line) { $is_windows = ($this->OS_remote == FTP_OS_Windows); if ($is_windows && preg_match("/([0-9]{2})-([0-9]{2})-([0-9]{2}) +([0-9]{2}):([0-9]{2})(AM|PM) +([0-9]+|) +(.+)/",$line,$lucifer)) { $b = array(); if ($lucifer[3]<70) { $lucifer[3]+=2000; } else { $lucifer[3]+=1900; } // 4digit year fix $b['isdir'] = ($lucifer[7]==""); if ( $b['isdir'] ) $b['type'] = 'd'; else $b['type'] = 'f'; $b['size'] = $lucifer[7]; $b['month'] = $lucifer[1]; $b['day'] = $lucifer[2]; $b['year'] = $lucifer[3]; $b['hour'] = $lucifer[4]; $b['minute'] = $lucifer[5]; $b['time'] = @mktime($lucifer[4]+(strcasecmp($lucifer[6],"PM")==0?12:0),$lucifer[5],0,$lucifer[1],$lucifer[2],$lucifer[3]); $b['am/pm'] = $lucifer[6]; $b['name'] = $lucifer[8]; } else if (!$is_windows && $lucifer=preg_split("/[ ]/",$line,9,PREG_SPLIT_NO_EMPTY)) { //echo $line."\n"; $lcount=count($lucifer); if ($lcount<8) return ''; $b = array(); $b['isdir'] = $lucifer[0]{0} === "d"; $b['islink'] = $lucifer[0]{0} === "l"; if ( $b['isdir'] ) $b['type'] = 'd'; elseif ( $b['islink'] ) $b['type'] = 'l'; else $b['type'] = 'f'; $b['perms'] = $lucifer[0]; $b['number'] = $lucifer[1]; $b['owner'] = $lucifer[2]; $b['group'] = $lucifer[3]; $b['size'] = $lucifer[4]; if ($lcount==8) { sscanf($lucifer[5],"%d-%d-%d",$b['year'],$b['month'],$b['day']); sscanf($lucifer[6],"%d:%d",$b['hour'],$b['minute']); $b['time'] = @mktime($b['hour'],$b['minute'],0,$b['month'],$b['day'],$b['year']); $b['name'] = $lucifer[7]; } else { $b['month'] = $lucifer[5]; $b['day'] = $lucifer[6]; if (preg_match("/([0-9]{2}):([0-9]{2})/",$lucifer[7],$l2)) { $b['year'] = date("Y"); $b['hour'] = $l2[1]; $b['minute'] = $l2[2]; } else { $b['year'] = $lucifer[7]; $b['hour'] = 0; $b['minute'] = 0; } $b['time'] = strtotime(sprintf("%d %s %d %02d:%02d",$b['day'],$b['month'],$b['year'],$b['hour'],$b['minute'])); $b['name'] = $lucifer[8]; } } return $b; } function SendMSG($message = "", $crlf=true) { if ($this->Verbose) { echo $message.($crlf?CRLF:""); flush(); } return TRUE; } function SetType($mode=FTP_AUTOASCII) { if(!in_array($mode, $this->AuthorizedTransferMode)) { $this->SendMSG("Wrong type"); return FALSE; } $this->_type=$mode; $this->SendMSG("Transfer type: ".($this->_type==FTP_BINARY?"binary":($this->_type==FTP_ASCII?"ASCII":"auto ASCII") ) ); return TRUE; } function _settype($mode=FTP_ASCII) { if($this->_ready) { if($mode==FTP_BINARY) { if($this->_curtype!=FTP_BINARY) { if(!$this->_exec("TYPE I", "SetType")) return FALSE; $this->_curtype=FTP_BINARY; } } elseif($this->_curtype!=FTP_ASCII) { if(!$this->_exec("TYPE A", "SetType")) return FALSE; $this->_curtype=FTP_ASCII; } } else return FALSE; return TRUE; } function Passive($pasv=NULL) { if(is_null($pasv)) $this->_passive=!$this->_passive; else $this->_passive=$pasv; if(!$this->_port_available and !$this->_passive) { $this->SendMSG("Only passive connections available!"); $this->_passive=TRUE; return FALSE; } $this->SendMSG("Passive mode ".($this->_passive?"on":"off")); return TRUE; } function SetServer($host, $port=21, $reconnect=true) { if(!is_long($port)) { $this->verbose=true; $this->SendMSG("Incorrect port syntax"); return FALSE; } else { $ip=@gethostbyname($host); $dns=@gethostbyaddr($host); if(!$ip) $ip=$host; if(!$dns) $dns=$host; // Validate the IPAddress PHP4 returns -1 for invalid, PHP5 false // -1 === "255.255.255.255" which is the broadcast address which is also going to be invalid $ipaslong = ip2long($ip); if ( ($ipaslong == false) || ($ipaslong === -1) ) { $this->SendMSG("Wrong host name/address \"".$host."\""); return FALSE; } $this->_host=$ip; $this->_fullhost=$dns; $this->_port=$port; $this->_dataport=$port-1; } $this->SendMSG("Host \"".$this->_fullhost."(".$this->_host."):".$this->_port."\""); if($reconnect){ if($this->_connected) { $this->SendMSG("Reconnecting"); if(!$this->quit(FTP_FORCE)) return FALSE; if(!$this->connect()) return FALSE; } } return TRUE; } function SetUmask($umask=0022) { $this->_umask=$umask; umask($this->_umask); $this->SendMSG("UMASK 0".decoct($this->_umask)); return TRUE; } function SetTimeout($timeout=30) { $this->_timeout=$timeout; $this->SendMSG("Timeout ".$this->_timeout); if($this->_connected) if(!$this->_settimeout($this->_ftp_control_sock)) return FALSE; return TRUE; } function connect($server=NULL) { if(!empty($server)) { if(!$this->SetServer($server)) return false; } if($this->_ready) return true; $this->SendMsg('Local OS : '.$this->OS_FullName[$this->OS_local]); if(!($this->_ftp_control_sock = $this->_connect($this->_host, $this->_port))) { $this->SendMSG("Error : Cannot connect to remote host \"".$this->_fullhost." :".$this->_port."\""); return FALSE; } $this->SendMSG("Connected to remote host \"".$this->_fullhost.":".$this->_port."\". Waiting for greeting."); do { if(!$this->_readmsg()) return FALSE; if(!$this->_checkCode()) return FALSE; $this->_lastaction=time(); } while($this->_code<200); $this->_ready=true; $syst=$this->systype(); if(!$syst) $this->SendMSG("Can't detect remote OS"); else { if(preg_match("/win|dos|novell/i", $syst[0])) $this->OS_remote=FTP_OS_Windows; elseif(preg_match("/os/i", $syst[0])) $this->OS_remote=FTP_OS_Mac; elseif(preg_match("/(li|u)nix/i", $syst[0])) $this->OS_remote=FTP_OS_Unix; else $this->OS_remote=FTP_OS_Mac; $this->SendMSG("Remote OS: ".$this->OS_FullName[$this->OS_remote]); } if(!$this->features()) $this->SendMSG("Can't get features list. All supported - disabled"); else $this->SendMSG("Supported features: ".implode(", ", array_keys($this->_features))); return TRUE; } function quit($force=false) { if($this->_ready) { if(!$this->_exec("QUIT") and !$force) return FALSE; if(!$this->_checkCode() and !$force) return FALSE; $this->_ready=false; $this->SendMSG("Session finished"); } $this->_quit(); return TRUE; } function login($user=NULL, $pass=NULL) { if(!is_null($user)) $this->_login=$user; else $this->_login="anonymous"; if(!is_null($pass)) $this->_password=$pass; else $this->_password="anon@anon.com"; if(!$this->_exec("USER ".$this->_login, "login")) return FALSE; if(!$this->_checkCode()) return FALSE; if($this->_code!=230) { if(!$this->_exec((($this->_code==331)?"PASS ":"ACCT ").$this->_password, "login")) return FALSE; if(!$this->_checkCode()) return FALSE; } $this->SendMSG("Authentication succeeded"); if(empty($this->_features)) { if(!$this->features()) $this->SendMSG("Can't get features list. All supported - disabled"); else $this->SendMSG("Supported features: ".implode(", ", array_keys($this->_features))); } return TRUE; } function pwd() { if(!$this->_exec("PWD", "pwd")) return FALSE; if(!$this->_checkCode()) return FALSE; return ereg_replace("^[0-9]{3} \"(.+)\".+", "\\1", $this->_message); } function cdup() { if(!$this->_exec("CDUP", "cdup")) return FALSE; if(!$this->_checkCode()) return FALSE; return true; } function chdir($pathname) { if(!$this->_exec("CWD ".$pathname, "chdir")) return FALSE; if(!$this->_checkCode()) return FALSE; return TRUE; } function rmdir($pathname) { if(!$this->_exec("RMD ".$pathname, "rmdir")) return FALSE; if(!$this->_checkCode()) return FALSE; return TRUE; } function mkdir($pathname) { if(!$this->_exec("MKD ".$pathname, "mkdir")) return FALSE; if(!$this->_checkCode()) return FALSE; return TRUE; } function rename($from, $to) { if(!$this->_exec("RNFR ".$from, "rename")) return FALSE; if(!$this->_checkCode()) return FALSE; if($this->_code==350) { if(!$this->_exec("RNTO ".$to, "rename")) return FALSE; if(!$this->_checkCode()) return FALSE; } else return FALSE; return TRUE; } function filesize($pathname) { if(!isset($this->_features["SIZE"])) { $this->PushError("filesize", "not supported by server"); return FALSE; } if(!$this->_exec("SIZE ".$pathname, "filesize")) return FALSE; if(!$this->_checkCode()) return FALSE; return ereg_replace("^[0-9]{3} ([0-9]+)".CRLF, "\\1", $this->_message); } function abort() { if(!$this->_exec("ABOR", "abort")) return FALSE; if(!$this->_checkCode()) { if($this->_code!=426) return FALSE; if(!$this->_readmsg("abort")) return FALSE; if(!$this->_checkCode()) return FALSE; } return true; } function mdtm($pathname) { if(!isset($this->_features["MDTM"])) { $this->PushError("mdtm", "not supported by server"); return FALSE; } if(!$this->_exec("MDTM ".$pathname, "mdtm")) return FALSE; if(!$this->_checkCode()) return FALSE; $mdtm = ereg_replace("^[0-9]{3} ([0-9]+)".CRLF, "\\1", $this->_message); $date = sscanf($mdtm, "%4d%2d%2d%2d%2d%2d"); $timestamp = mktime($date[3], $date[4], $date[5], $date[1], $date[2], $date[0]); return $timestamp; } function systype() { if(!$this->_exec("SYST", "systype")) return FALSE; if(!$this->_checkCode()) return FALSE; $DATA = explode(" ", $this->_message); return array($DATA[1], $DATA[3]); } function delete($pathname) { if(!$this->_exec("DELE ".$pathname, "delete")) return FALSE; if(!$this->_checkCode()) return FALSE; return TRUE; } function site($command, $fnction="site") { if(!$this->_exec("SITE ".$command, $fnction)) return FALSE; if(!$this->_checkCode()) return FALSE; return TRUE; } function chmod($pathname, $mode) { if(!$this->site( sprintf('CHMOD %o %s', $mode, $pathname), "chmod")) return FALSE; return TRUE; } function restore($from) { if(!isset($this->_features["REST"])) { $this->PushError("restore", "not supported by server"); return FALSE; } if($this->_curtype!=FTP_BINARY) { $this->PushError("restore", "can't restore in ASCII mode"); return FALSE; } if(!$this->_exec("REST ".$from, "resore")) return FALSE; if(!$this->_checkCode()) return FALSE; return TRUE; } function features() { if(!$this->_exec("FEAT", "features")) return FALSE; if(!$this->_checkCode()) return FALSE; $f=preg_split("/[".CRLF."]+/", preg_replace("/[0-9]{3}[ -].*[".CRLF."]+/", "", $this->_message), -1, PREG_SPLIT_NO_EMPTY); $this->_features=array(); foreach($f as $k=>$v) { $v=explode(" ", trim($v)); $this->_features[array_shift($v)]=$v; } return true; } function rawlist($pathname="", $arg="") { return $this->_list(($arg?" ".$arg:"").($pathname?" ".$pathname:""), "LIST", "rawlist"); } function nlist($pathname="") { return $this->_list(($arg?" ".$arg:"").($pathname?" ".$pathname:""), "NLST", "nlist"); } function is_exists($pathname) { return $this->file_exists($pathname); } function file_exists($pathname) { $exists=true; if(!$this->_exec("RNFR ".$pathname, "rename")) $exists=FALSE; else { if(!$this->_checkCode()) $exists=FALSE; $this->abort(); } if($exists) $this->SendMSG("Remote file ".$pathname." exists"); else $this->SendMSG("Remote file ".$pathname." does not exist"); return $exists; } function fget($fp, $remotefile,$rest=0) { if($this->_can_restore and $rest!=0) fseek($fp, $rest); $pi=pathinfo($remotefile); if($this->_type==FTP_ASCII or ($this->_type==FTP_AUTOASCII and in_array(strtoupper($pi["extension"]), $this->AutoAsciiExt))) $mode=FTP_ASCII; else $mode=FTP_BINARY; if(!$this->_data_prepare($mode)) { return FALSE; } if($this->_can_restore and $rest!=0) $this->restore($rest); if(!$this->_exec("RETR ".$remotefile, "get")) { $this->_data_close(); return FALSE; } if(!$this->_checkCode()) { $this->_data_close(); return FALSE; } $out=$this->_data_read($mode, $fp); $this->_data_close(); if(!$this->_readmsg()) return FALSE; if(!$this->_checkCode()) return FALSE; return $out; } function get($remotefile, $localfile=NULL, $rest=0) { if(is_null($localfile)) $localfile=$remotefile; if (@file_exists($localfile)) $this->SendMSG("Warning : local file will be overwritten"); $fp = @fopen($localfile, "w"); if (!$fp) { $this->PushError("get","can't open local file", "Cannot create \"".$localfile."\""); return FALSE; } if($this->_can_restore and $rest!=0) fseek($fp, $rest); $pi=pathinfo($remotefile); if($this->_type==FTP_ASCII or ($this->_type==FTP_AUTOASCII and in_array(strtoupper($pi["extension"]), $this->AutoAsciiExt))) $mode=FTP_ASCII; else $mode=FTP_BINARY; if(!$this->_data_prepare($mode)) { fclose($fp); return FALSE; } if($this->_can_restore and $rest!=0) $this->restore($rest); if(!$this->_exec("RETR ".$remotefile, "get")) { $this->_data_close(); fclose($fp); return FALSE; } if(!$this->_checkCode()) { $this->_data_close(); fclose($fp); return FALSE; } $out=$this->_data_read($mode, $fp); fclose($fp); $this->_data_close(); if(!$this->_readmsg()) return FALSE; if(!$this->_checkCode()) return FALSE; return $out; } function fput($remotefile, $fp) { if($this->_can_restore and $rest!=0) fseek($fp, $rest); $pi=pathinfo($remotefile); if($this->_type==FTP_ASCII or ($this->_type==FTP_AUTOASCII and in_array(strtoupper($pi["extension"]), $this->AutoAsciiExt))) $mode=FTP_ASCII; else $mode=FTP_BINARY; if(!$this->_data_prepare($mode)) { return FALSE; } if($this->_can_restore and $rest!=0) $this->restore($rest); if(!$this->_exec("STOR ".$remotefile, "put")) { $this->_data_close(); return FALSE; } if(!$this->_checkCode()) { $this->_data_close(); return FALSE; } $ret=$this->_data_write($mode, $fp); $this->_data_close(); if(!$this->_readmsg()) return FALSE; if(!$this->_checkCode()) return FALSE; return $ret; } function put($localfile, $remotefile=NULL, $rest=0) { if(is_null($remotefile)) $remotefile=$localfile; if (!file_exists($localfile)) { $this->PushError("put","can't open local file", "No such file or directory \"".$localfile."\""); return FALSE; } $fp = @fopen($localfile, "r"); if (!$fp) { $this->PushError("put","can't open local file", "Cannot read file \"".$localfile."\""); return FALSE; } if($this->_can_restore and $rest!=0) fseek($fp, $rest); $pi=pathinfo($localfile); if($this->_type==FTP_ASCII or ($this->_type==FTP_AUTOASCII and in_array(strtoupper($pi["extension"]), $this->AutoAsciiExt))) $mode=FTP_ASCII; else $mode=FTP_BINARY; if(!$this->_data_prepare($mode)) { fclose($fp); return FALSE; } if($this->_can_restore and $rest!=0) $this->restore($rest); if(!$this->_exec("STOR ".$remotefile, "put")) { $this->_data_close(); fclose($fp); return FALSE; } if(!$this->_checkCode()) { $this->_data_close(); fclose($fp); return FALSE; } $ret=$this->_data_write($mode, $fp); fclose($fp); $this->_data_close(); if(!$this->_readmsg()) return FALSE; if(!$this->_checkCode()) return FALSE; return $ret; } function mput($local=".", $remote=NULL, $continious=false) { $local=realpath($local); if(!@file_exists($local)) { $this->PushError("mput","can't open local folder", "Cannot stat folder \"".$local."\""); return FALSE; } if(!is_dir($local)) return $this->put($local, $remote); if(empty($remote)) $remote="."; elseif(!$this->file_exists($remote) and !$this->mkdir($remote)) return FALSE; if($handle = opendir($local)) { $list=array(); while (false !== ($file = readdir($handle))) { if ($file != "." && $file != "..") $list[]=$file; } closedir($handle); } else { $this->PushError("mput","can't open local folder", "Cannot read folder \"".$local."\""); return FALSE; } if(empty($list)) return TRUE; $ret=true; foreach($list as $el) { if(is_dir($local."/".$el)) $t=$this->mput($local."/".$el, $remote."/".$el); else $t=$this->put($local."/".$el, $remote."/".$el); if(!$t) { $ret=FALSE; if(!$continious) break; } } return $ret; } function mget($remote, $local=".", $continious=false) { $list=$this->rawlist($remote, "-lA"); if($list===false) { $this->PushError("mget","can't read remote folder list", "Can't read remote folder \"".$remote."\" contents"); return FALSE; } if(empty($list)) return true; if(!@file_exists($local)) { if(!@mkdir($local)) { $this->PushError("mget","can't create local folder", "Cannot create folder \"".$local."\""); return FALSE; } } foreach($list as $k=>$v) { $list[$k]=$this->parselisting($v); if($list[$k]["name"]=="." or $list[$k]["name"]=="..") unset($list[$k]); } $ret=true; foreach($list as $el) { if($el["type"]=="d") { if(!$this->mget($remote."/".$el["name"], $local."/".$el["name"], $continious)) { $this->PushError("mget", "can't copy folder", "Can't copy remote folder \"".$remote."/".$el["name"]."\" to local \"".$local."/".$el["name"]."\""); $ret=false; if(!$continious) break; } } else { if(!$this->get($remote."/".$el["name"], $local."/".$el["name"])) { $this->PushError("mget", "can't copy file", "Can't copy remote file \"".$remote."/".$el["name"]."\" to local \"".$local."/".$el["name"]."\""); $ret=false; if(!$continious) break; } } @chmod($local."/".$el["name"], $el["perms"]); $t=strtotime($el["date"]); if($t!==-1 and $t!==false) @touch($local."/".$el["name"], $t); } return $ret; } function mdel($remote, $continious=false) { $list=$this->rawlist($remote, "-la"); if($list===false) { $this->PushError("mdel","can't read remote folder list", "Can't read remote folder \"".$remote."\" contents"); return false; } foreach($list as $k=>$v) { $list[$k]=$this->parselisting($v); if($list[$k]["name"]=="." or $list[$k]["name"]=="..") unset($list[$k]); } $ret=true; foreach($list as $el) { if ( empty($el) ) continue; if($el["type"]=="d") { if(!$this->mdel($remote."/".$el["name"], $continious)) { $ret=false; if(!$continious) break; } } else { if (!$this->delete($remote."/".$el["name"])) { $this->PushError("mdel", "can't delete file", "Can't delete remote file \"".$remote."/".$el["name"]."\""); $ret=false; if(!$continious) break; } } } if(!$this->rmdir($remote)) { $this->PushError("mdel", "can't delete folder", "Can't delete remote folder \"".$remote."/".$el["name"]."\""); $ret=false; } return $ret; } function mmkdir($dir, $mode = 0777) { if(empty($dir)) return FALSE; if($this->is_exists($dir) or $dir == "/" ) return TRUE; if(!$this->mmkdir(dirname($dir), $mode)) return false; $r=$this->mkdir($dir, $mode); $this->chmod($dir,$mode); return $r; } function glob($pattern, $handle=NULL) { $path=$output=null; if(PHP_OS=='WIN32') $slash='\\'; else $slash='/'; $lastpos=strrpos($pattern,$slash); if(!($lastpos===false)) { $path=substr($pattern,0,-$lastpos-1); $pattern=substr($pattern,$lastpos); } else $path=getcwd(); if(is_array($handle) and !empty($handle)) { while($dir=each($handle)) { if($this->glob_pattern_match($pattern,$dir)) $output[]=$dir; } } else { $handle=@opendir($path); if($handle===false) return false; while($dir=readdir($handle)) { if($this->glob_pattern_match($pattern,$dir)) $output[]=$dir; } closedir($handle); } if(is_array($output)) return $output; return false; } function glob_pattern_match($pattern,$string) { $out=null; $chunks=explode(';',$pattern); foreach($chunks as $pattern) { $escape=array('$','^','.','{','}','(',')','[',']','|'); while(strpos($pattern,'**')!==false) $pattern=str_replace('**','*',$pattern); foreach($escape as $probe) $pattern=str_replace($probe,"\\$probe",$pattern); $pattern=str_replace('?*','*', str_replace('*?','*', str_replace('*',".*", str_replace('?','.{1,1}',$pattern)))); $out[]=$pattern; } if(count($out)==1) return($this->glob_regexp("^$out[0]$",$string)); else { foreach($out as $tester) if($this->my_regexp("^$tester$",$string)) return true; } return false; } function glob_regexp($pattern,$probe) { $sensitive=(PHP_OS!='WIN32'); return ($sensitive? ereg($pattern,$probe): eregi($pattern,$probe) ); } function dirlist($remote) { $list=$this->rawlist($remote, "-la"); if($list===false) { $this->PushError("dirlist","can't read remote folder list", "Can't read remote folder \"".$remote."\" contents"); return false; } $dirlist = array(); foreach($list as $k=>$v) { $entry=$this->parselisting($v); if ( empty($entry) ) continue; if($entry["name"]=="." or $entry["name"]=="..") continue; $dirlist[$entry['name']] = $entry; } return $dirlist; } // // // function _checkCode() { return ($this->_code<400 and $this->_code>0); } function _list($arg="", $cmd="LIST", $fnction="_list") { if(!$this->_data_prepare()) return false; if(!$this->_exec($cmd.$arg, $fnction)) { $this->_data_close(); return FALSE; } if(!$this->_checkCode()) { $this->_data_close(); return FALSE; } $out=""; if($this->_code<200) { $out=$this->_data_read(); $this->_data_close(); if(!$this->_readmsg()) return FALSE; if(!$this->_checkCode()) return FALSE; if($out === FALSE ) return FALSE; $out=preg_split("/[".CRLF."]+/", $out, -1, PREG_SPLIT_NO_EMPTY); // $this->SendMSG(implode($this->_eol_code[$this->OS_local], $out)); } return $out; } // // // // Gnre une erreur pour traitement externe la classe function PushError($fctname,$msg,$desc=false){ $error=array(); $error['time']=time(); $error['fctname']=$fctname; $error['msg']=$msg; $error['desc']=$desc; if($desc) $tmp=' ('.$desc.')'; else $tmp=''; $this->SendMSG($fctname.': '.$msg.$tmp); return(array_push($this->_error_array,$error)); } // Rcupre une erreur externe function PopError(){ if(count($this->_error_array)) return(array_pop($this->_error_array)); else return(false); } } $mod_sockets=TRUE; if (!extension_loaded('sockets')) { $prefix = (PHP_SHLIB_SUFFIX == 'dll') ? 'php_' : ''; if(!@dl($prefix . 'sockets.' . PHP_SHLIB_SUFFIX)) $mod_sockets=FALSE; } require_once "class-ftp-".($mod_sockets?"sockets":"pure").".php"; ?> wp-admin/includes/class-pclzip.php0000644002347300047320000057604211656660342017072 0ustar vonfabpsaclnzipname = $p_zipname; $this->zip_fd = 0; $this->magic_quotes_status = -1; // ----- Return return; } // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- // Function : // create($p_filelist, $p_add_dir="", $p_remove_dir="") // create($p_filelist, $p_option, $p_option_value, ...) // Description : // This method supports two different synopsis. The first one is historical. // This method creates a Zip Archive. The Zip file is created in the // filesystem. The files and directories indicated in $p_filelist // are added in the archive. See the parameters description for the // supported format of $p_filelist. // When a directory is in the list, the directory and its content is added // in the archive. // In this synopsis, the function takes an optional variable list of // options. See bellow the supported options. // Parameters : // $p_filelist : An array containing file or directory names, or // a string containing one filename or one directory name, or // a string containing a list of filenames and/or directory // names separated by spaces. // $p_add_dir : A path to add before the real path of the archived file, // in order to have it memorized in the archive. // $p_remove_dir : A path to remove from the real path of the file to archive, // in order to have a shorter path memorized in the archive. // When $p_add_dir and $p_remove_dir are set, $p_remove_dir // is removed first, before $p_add_dir is added. // Options : // PCLZIP_OPT_ADD_PATH : // PCLZIP_OPT_REMOVE_PATH : // PCLZIP_OPT_REMOVE_ALL_PATH : // PCLZIP_OPT_COMMENT : // PCLZIP_CB_PRE_ADD : // PCLZIP_CB_POST_ADD : // Return Values : // 0 on failure, // The list of the added files, with a status of the add action. // (see PclZip::listContent() for list entry format) // -------------------------------------------------------------------------------- function create($p_filelist) { $v_result=1; // ----- Reset the error handler $this->privErrorReset(); // ----- Set default values $v_options = array(); $v_options[PCLZIP_OPT_NO_COMPRESSION] = FALSE; // ----- Look for variable options arguments $v_size = func_num_args(); // ----- Look for arguments if ($v_size > 1) { // ----- Get the arguments $v_arg_list = func_get_args(); // ----- Remove from the options list the first argument array_shift($v_arg_list); $v_size--; // ----- Look for first arg if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) { // ----- Parse the options $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, array (PCLZIP_OPT_REMOVE_PATH => 'optional', PCLZIP_OPT_REMOVE_ALL_PATH => 'optional', PCLZIP_OPT_ADD_PATH => 'optional', PCLZIP_CB_PRE_ADD => 'optional', PCLZIP_CB_POST_ADD => 'optional', PCLZIP_OPT_NO_COMPRESSION => 'optional', PCLZIP_OPT_COMMENT => 'optional', PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional', PCLZIP_OPT_TEMP_FILE_ON => 'optional', PCLZIP_OPT_TEMP_FILE_OFF => 'optional' //, PCLZIP_OPT_CRYPT => 'optional' )); if ($v_result != 1) { return 0; } } // ----- Look for 2 args // Here we need to support the first historic synopsis of the // method. else { // ----- Get the first argument $v_options[PCLZIP_OPT_ADD_PATH] = $v_arg_list[0]; // ----- Look for the optional second argument if ($v_size == 2) { $v_options[PCLZIP_OPT_REMOVE_PATH] = $v_arg_list[1]; } else if ($v_size > 2) { PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments"); return 0; } } } // ----- Look for default option values $this->privOptionDefaultThreshold($v_options); // ----- Init $v_string_list = array(); $v_att_list = array(); $v_filedescr_list = array(); $p_result_list = array(); // ----- Look if the $p_filelist is really an array if (is_array($p_filelist)) { // ----- Look if the first element is also an array // This will mean that this is a file description entry if (isset($p_filelist[0]) && is_array($p_filelist[0])) { $v_att_list = $p_filelist; } // ----- The list is a list of string names else { $v_string_list = $p_filelist; } } // ----- Look if the $p_filelist is a string else if (is_string($p_filelist)) { // ----- Create a list from the string $v_string_list = explode(PCLZIP_SEPARATOR, $p_filelist); } // ----- Invalid variable type for $p_filelist else { PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_filelist"); return 0; } // ----- Reformat the string list if (sizeof($v_string_list) != 0) { foreach ($v_string_list as $v_string) { if ($v_string != '') { $v_att_list[][PCLZIP_ATT_FILE_NAME] = $v_string; } else { } } } // ----- For each file in the list check the attributes $v_supported_attributes = array ( PCLZIP_ATT_FILE_NAME => 'mandatory' ,PCLZIP_ATT_FILE_NEW_SHORT_NAME => 'optional' ,PCLZIP_ATT_FILE_NEW_FULL_NAME => 'optional' ,PCLZIP_ATT_FILE_MTIME => 'optional' ,PCLZIP_ATT_FILE_CONTENT => 'optional' ,PCLZIP_ATT_FILE_COMMENT => 'optional' ); foreach ($v_att_list as $v_entry) { $v_result = $this->privFileDescrParseAtt($v_entry, $v_filedescr_list[], $v_options, $v_supported_attributes); if ($v_result != 1) { return 0; } } // ----- Expand the filelist (expand directories) $v_result = $this->privFileDescrExpand($v_filedescr_list, $v_options); if ($v_result != 1) { return 0; } // ----- Call the create fct $v_result = $this->privCreate($v_filedescr_list, $p_result_list, $v_options); if ($v_result != 1) { return 0; } // ----- Return return $p_result_list; } // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- // Function : // add($p_filelist, $p_add_dir="", $p_remove_dir="") // add($p_filelist, $p_option, $p_option_value, ...) // Description : // This method supports two synopsis. The first one is historical. // This methods add the list of files in an existing archive. // If a file with the same name already exists, it is added at the end of the // archive, the first one is still present. // If the archive does not exist, it is created. // Parameters : // $p_filelist : An array containing file or directory names, or // a string containing one filename or one directory name, or // a string containing a list of filenames and/or directory // names separated by spaces. // $p_add_dir : A path to add before the real path of the archived file, // in order to have it memorized in the archive. // $p_remove_dir : A path to remove from the real path of the file to archive, // in order to have a shorter path memorized in the archive. // When $p_add_dir and $p_remove_dir are set, $p_remove_dir // is removed first, before $p_add_dir is added. // Options : // PCLZIP_OPT_ADD_PATH : // PCLZIP_OPT_REMOVE_PATH : // PCLZIP_OPT_REMOVE_ALL_PATH : // PCLZIP_OPT_COMMENT : // PCLZIP_OPT_ADD_COMMENT : // PCLZIP_OPT_PREPEND_COMMENT : // PCLZIP_CB_PRE_ADD : // PCLZIP_CB_POST_ADD : // Return Values : // 0 on failure, // The list of the added files, with a status of the add action. // (see PclZip::listContent() for list entry format) // -------------------------------------------------------------------------------- function add($p_filelist) { $v_result=1; // ----- Reset the error handler $this->privErrorReset(); // ----- Set default values $v_options = array(); $v_options[PCLZIP_OPT_NO_COMPRESSION] = FALSE; // ----- Look for variable options arguments $v_size = func_num_args(); // ----- Look for arguments if ($v_size > 1) { // ----- Get the arguments $v_arg_list = func_get_args(); // ----- Remove form the options list the first argument array_shift($v_arg_list); $v_size--; // ----- Look for first arg if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) { // ----- Parse the options $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, array (PCLZIP_OPT_REMOVE_PATH => 'optional', PCLZIP_OPT_REMOVE_ALL_PATH => 'optional', PCLZIP_OPT_ADD_PATH => 'optional', PCLZIP_CB_PRE_ADD => 'optional', PCLZIP_CB_POST_ADD => 'optional', PCLZIP_OPT_NO_COMPRESSION => 'optional', PCLZIP_OPT_COMMENT => 'optional', PCLZIP_OPT_ADD_COMMENT => 'optional', PCLZIP_OPT_PREPEND_COMMENT => 'optional', PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional', PCLZIP_OPT_TEMP_FILE_ON => 'optional', PCLZIP_OPT_TEMP_FILE_OFF => 'optional' //, PCLZIP_OPT_CRYPT => 'optional' )); if ($v_result != 1) { return 0; } } // ----- Look for 2 args // Here we need to support the first historic synopsis of the // method. else { // ----- Get the first argument $v_options[PCLZIP_OPT_ADD_PATH] = $v_add_path = $v_arg_list[0]; // ----- Look for the optional second argument if ($v_size == 2) { $v_options[PCLZIP_OPT_REMOVE_PATH] = $v_arg_list[1]; } else if ($v_size > 2) { // ----- Error log PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments"); // ----- Return return 0; } } } // ----- Look for default option values $this->privOptionDefaultThreshold($v_options); // ----- Init $v_string_list = array(); $v_att_list = array(); $v_filedescr_list = array(); $p_result_list = array(); // ----- Look if the $p_filelist is really an array if (is_array($p_filelist)) { // ----- Look if the first element is also an array // This will mean that this is a file description entry if (isset($p_filelist[0]) && is_array($p_filelist[0])) { $v_att_list = $p_filelist; } // ----- The list is a list of string names else { $v_string_list = $p_filelist; } } // ----- Look if the $p_filelist is a string else if (is_string($p_filelist)) { // ----- Create a list from the string $v_string_list = explode(PCLZIP_SEPARATOR, $p_filelist); } // ----- Invalid variable type for $p_filelist else { PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type '".gettype($p_filelist)."' for p_filelist"); return 0; } // ----- Reformat the string list if (sizeof($v_string_list) != 0) { foreach ($v_string_list as $v_string) { $v_att_list[][PCLZIP_ATT_FILE_NAME] = $v_string; } } // ----- For each file in the list check the attributes $v_supported_attributes = array ( PCLZIP_ATT_FILE_NAME => 'mandatory' ,PCLZIP_ATT_FILE_NEW_SHORT_NAME => 'optional' ,PCLZIP_ATT_FILE_NEW_FULL_NAME => 'optional' ,PCLZIP_ATT_FILE_MTIME => 'optional' ,PCLZIP_ATT_FILE_CONTENT => 'optional' ,PCLZIP_ATT_FILE_COMMENT => 'optional' ); foreach ($v_att_list as $v_entry) { $v_result = $this->privFileDescrParseAtt($v_entry, $v_filedescr_list[], $v_options, $v_supported_attributes); if ($v_result != 1) { return 0; } } // ----- Expand the filelist (expand directories) $v_result = $this->privFileDescrExpand($v_filedescr_list, $v_options); if ($v_result != 1) { return 0; } // ----- Call the create fct $v_result = $this->privAdd($v_filedescr_list, $p_result_list, $v_options); if ($v_result != 1) { return 0; } // ----- Return return $p_result_list; } // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- // Function : listContent() // Description : // This public method, gives the list of the files and directories, with their // properties. // The properties of each entries in the list are (used also in other functions) : // filename : Name of the file. For a create or add action it is the filename // given by the user. For an extract function it is the filename // of the extracted file. // stored_filename : Name of the file / directory stored in the archive. // size : Size of the stored file. // compressed_size : Size of the file's data compressed in the archive // (without the headers overhead) // mtime : Last known modification date of the file (UNIX timestamp) // comment : Comment associated with the file // folder : true | false // index : index of the file in the archive // status : status of the action (depending of the action) : // Values are : // ok : OK ! // filtered : the file / dir is not extracted (filtered by user) // already_a_directory : the file can not be extracted because a // directory with the same name already exists // write_protected : the file can not be extracted because a file // with the same name already exists and is // write protected // newer_exist : the file was not extracted because a newer file exists // path_creation_fail : the file is not extracted because the folder // does not exist and can not be created // write_error : the file was not extracted because there was a // error while writing the file // read_error : the file was not extracted because there was a error // while reading the file // invalid_header : the file was not extracted because of an archive // format error (bad file header) // Note that each time a method can continue operating when there // is an action error on a file, the error is only logged in the file status. // Return Values : // 0 on an unrecoverable failure, // The list of the files in the archive. // -------------------------------------------------------------------------------- function listContent() { $v_result=1; // ----- Reset the error handler $this->privErrorReset(); // ----- Check archive if (!$this->privCheckFormat()) { return(0); } // ----- Call the extracting fct $p_list = array(); if (($v_result = $this->privList($p_list)) != 1) { unset($p_list); return(0); } // ----- Return return $p_list; } // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- // Function : // extract($p_path="./", $p_remove_path="") // extract([$p_option, $p_option_value, ...]) // Description : // This method supports two synopsis. The first one is historical. // This method extract all the files / directories from the archive to the // folder indicated in $p_path. // If you want to ignore the 'root' part of path of the memorized files // you can indicate this in the optional $p_remove_path parameter. // By default, if a newer file with the same name already exists, the // file is not extracted. // // If both PCLZIP_OPT_PATH and PCLZIP_OPT_ADD_PATH aoptions // are used, the path indicated in PCLZIP_OPT_ADD_PATH is append // at the end of the path value of PCLZIP_OPT_PATH. // Parameters : // $p_path : Path where the files and directories are to be extracted // $p_remove_path : First part ('root' part) of the memorized path // (if any similar) to remove while extracting. // Options : // PCLZIP_OPT_PATH : // PCLZIP_OPT_ADD_PATH : // PCLZIP_OPT_REMOVE_PATH : // PCLZIP_OPT_REMOVE_ALL_PATH : // PCLZIP_CB_PRE_EXTRACT : // PCLZIP_CB_POST_EXTRACT : // Return Values : // 0 or a negative value on failure, // The list of the extracted files, with a status of the action. // (see PclZip::listContent() for list entry format) // -------------------------------------------------------------------------------- function extract() { $v_result=1; // ----- Reset the error handler $this->privErrorReset(); // ----- Check archive if (!$this->privCheckFormat()) { return(0); } // ----- Set default values $v_options = array(); // $v_path = "./"; $v_path = ''; $v_remove_path = ""; $v_remove_all_path = false; // ----- Look for variable options arguments $v_size = func_num_args(); // ----- Default values for option $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE; // ----- Look for arguments if ($v_size > 0) { // ----- Get the arguments $v_arg_list = func_get_args(); // ----- Look for first arg if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) { // ----- Parse the options $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, array (PCLZIP_OPT_PATH => 'optional', PCLZIP_OPT_REMOVE_PATH => 'optional', PCLZIP_OPT_REMOVE_ALL_PATH => 'optional', PCLZIP_OPT_ADD_PATH => 'optional', PCLZIP_CB_PRE_EXTRACT => 'optional', PCLZIP_CB_POST_EXTRACT => 'optional', PCLZIP_OPT_SET_CHMOD => 'optional', PCLZIP_OPT_BY_NAME => 'optional', PCLZIP_OPT_BY_EREG => 'optional', PCLZIP_OPT_BY_PREG => 'optional', PCLZIP_OPT_BY_INDEX => 'optional', PCLZIP_OPT_EXTRACT_AS_STRING => 'optional', PCLZIP_OPT_EXTRACT_IN_OUTPUT => 'optional', PCLZIP_OPT_REPLACE_NEWER => 'optional' ,PCLZIP_OPT_STOP_ON_ERROR => 'optional' ,PCLZIP_OPT_EXTRACT_DIR_RESTRICTION => 'optional', PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional', PCLZIP_OPT_TEMP_FILE_ON => 'optional', PCLZIP_OPT_TEMP_FILE_OFF => 'optional' )); if ($v_result != 1) { return 0; } // ----- Set the arguments if (isset($v_options[PCLZIP_OPT_PATH])) { $v_path = $v_options[PCLZIP_OPT_PATH]; } if (isset($v_options[PCLZIP_OPT_REMOVE_PATH])) { $v_remove_path = $v_options[PCLZIP_OPT_REMOVE_PATH]; } if (isset($v_options[PCLZIP_OPT_REMOVE_ALL_PATH])) { $v_remove_all_path = $v_options[PCLZIP_OPT_REMOVE_ALL_PATH]; } if (isset($v_options[PCLZIP_OPT_ADD_PATH])) { // ----- Check for '/' in last path char if ((strlen($v_path) > 0) && (substr($v_path, -1) != '/')) { $v_path .= '/'; } $v_path .= $v_options[PCLZIP_OPT_ADD_PATH]; } } // ----- Look for 2 args // Here we need to support the first historic synopsis of the // method. else { // ----- Get the first argument $v_path = $v_arg_list[0]; // ----- Look for the optional second argument if ($v_size == 2) { $v_remove_path = $v_arg_list[1]; } else if ($v_size > 2) { // ----- Error log PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments"); // ----- Return return 0; } } } // ----- Look for default option values $this->privOptionDefaultThreshold($v_options); // ----- Trace // ----- Call the extracting fct $p_list = array(); $v_result = $this->privExtractByRule($p_list, $v_path, $v_remove_path, $v_remove_all_path, $v_options); if ($v_result < 1) { unset($p_list); return(0); } // ----- Return return $p_list; } // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- // Function : // extractByIndex($p_index, $p_path="./", $p_remove_path="") // extractByIndex($p_index, [$p_option, $p_option_value, ...]) // Description : // This method supports two synopsis. The first one is historical. // This method is doing a partial extract of the archive. // The extracted files or folders are identified by their index in the // archive (from 0 to n). // Note that if the index identify a folder, only the folder entry is // extracted, not all the files included in the archive. // Parameters : // $p_index : A single index (integer) or a string of indexes of files to // extract. The form of the string is "0,4-6,8-12" with only numbers // and '-' for range or ',' to separate ranges. No spaces or ';' // are allowed. // $p_path : Path where the files and directories are to be extracted // $p_remove_path : First part ('root' part) of the memorized path // (if any similar) to remove while extracting. // Options : // PCLZIP_OPT_PATH : // PCLZIP_OPT_ADD_PATH : // PCLZIP_OPT_REMOVE_PATH : // PCLZIP_OPT_REMOVE_ALL_PATH : // PCLZIP_OPT_EXTRACT_AS_STRING : The files are extracted as strings and // not as files. // The resulting content is in a new field 'content' in the file // structure. // This option must be used alone (any other options are ignored). // PCLZIP_CB_PRE_EXTRACT : // PCLZIP_CB_POST_EXTRACT : // Return Values : // 0 on failure, // The list of the extracted files, with a status of the action. // (see PclZip::listContent() for list entry format) // -------------------------------------------------------------------------------- //function extractByIndex($p_index, options...) function extractByIndex($p_index) { $v_result=1; // ----- Reset the error handler $this->privErrorReset(); // ----- Check archive if (!$this->privCheckFormat()) { return(0); } // ----- Set default values $v_options = array(); // $v_path = "./"; $v_path = ''; $v_remove_path = ""; $v_remove_all_path = false; // ----- Look for variable options arguments $v_size = func_num_args(); // ----- Default values for option $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE; // ----- Look for arguments if ($v_size > 1) { // ----- Get the arguments $v_arg_list = func_get_args(); // ----- Remove form the options list the first argument array_shift($v_arg_list); $v_size--; // ----- Look for first arg if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) { // ----- Parse the options $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, array (PCLZIP_OPT_PATH => 'optional', PCLZIP_OPT_REMOVE_PATH => 'optional', PCLZIP_OPT_REMOVE_ALL_PATH => 'optional', PCLZIP_OPT_EXTRACT_AS_STRING => 'optional', PCLZIP_OPT_ADD_PATH => 'optional', PCLZIP_CB_PRE_EXTRACT => 'optional', PCLZIP_CB_POST_EXTRACT => 'optional', PCLZIP_OPT_SET_CHMOD => 'optional', PCLZIP_OPT_REPLACE_NEWER => 'optional' ,PCLZIP_OPT_STOP_ON_ERROR => 'optional' ,PCLZIP_OPT_EXTRACT_DIR_RESTRICTION => 'optional', PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional', PCLZIP_OPT_TEMP_FILE_ON => 'optional', PCLZIP_OPT_TEMP_FILE_OFF => 'optional' )); if ($v_result != 1) { return 0; } // ----- Set the arguments if (isset($v_options[PCLZIP_OPT_PATH])) { $v_path = $v_options[PCLZIP_OPT_PATH]; } if (isset($v_options[PCLZIP_OPT_REMOVE_PATH])) { $v_remove_path = $v_options[PCLZIP_OPT_REMOVE_PATH]; } if (isset($v_options[PCLZIP_OPT_REMOVE_ALL_PATH])) { $v_remove_all_path = $v_options[PCLZIP_OPT_REMOVE_ALL_PATH]; } if (isset($v_options[PCLZIP_OPT_ADD_PATH])) { // ----- Check for '/' in last path char if ((strlen($v_path) > 0) && (substr($v_path, -1) != '/')) { $v_path .= '/'; } $v_path .= $v_options[PCLZIP_OPT_ADD_PATH]; } if (!isset($v_options[PCLZIP_OPT_EXTRACT_AS_STRING])) { $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE; } else { } } // ----- Look for 2 args // Here we need to support the first historic synopsis of the // method. else { // ----- Get the first argument $v_path = $v_arg_list[0]; // ----- Look for the optional second argument if ($v_size == 2) { $v_remove_path = $v_arg_list[1]; } else if ($v_size > 2) { // ----- Error log PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments"); // ----- Return return 0; } } } // ----- Trace // ----- Trick // Here I want to reuse extractByRule(), so I need to parse the $p_index // with privParseOptions() $v_arg_trick = array (PCLZIP_OPT_BY_INDEX, $p_index); $v_options_trick = array(); $v_result = $this->privParseOptions($v_arg_trick, sizeof($v_arg_trick), $v_options_trick, array (PCLZIP_OPT_BY_INDEX => 'optional' )); if ($v_result != 1) { return 0; } $v_options[PCLZIP_OPT_BY_INDEX] = $v_options_trick[PCLZIP_OPT_BY_INDEX]; // ----- Look for default option values $this->privOptionDefaultThreshold($v_options); // ----- Call the extracting fct if (($v_result = $this->privExtractByRule($p_list, $v_path, $v_remove_path, $v_remove_all_path, $v_options)) < 1) { return(0); } // ----- Return return $p_list; } // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- // Function : // delete([$p_option, $p_option_value, ...]) // Description : // This method removes files from the archive. // If no parameters are given, then all the archive is emptied. // Parameters : // None or optional arguments. // Options : // PCLZIP_OPT_BY_INDEX : // PCLZIP_OPT_BY_NAME : // PCLZIP_OPT_BY_EREG : // PCLZIP_OPT_BY_PREG : // Return Values : // 0 on failure, // The list of the files which are still present in the archive. // (see PclZip::listContent() for list entry format) // -------------------------------------------------------------------------------- function delete() { $v_result=1; // ----- Reset the error handler $this->privErrorReset(); // ----- Check archive if (!$this->privCheckFormat()) { return(0); } // ----- Set default values $v_options = array(); // ----- Look for variable options arguments $v_size = func_num_args(); // ----- Look for arguments if ($v_size > 0) { // ----- Get the arguments $v_arg_list = func_get_args(); // ----- Parse the options $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, array (PCLZIP_OPT_BY_NAME => 'optional', PCLZIP_OPT_BY_EREG => 'optional', PCLZIP_OPT_BY_PREG => 'optional', PCLZIP_OPT_BY_INDEX => 'optional' )); if ($v_result != 1) { return 0; } } // ----- Magic quotes trick $this->privDisableMagicQuotes(); // ----- Call the delete fct $v_list = array(); if (($v_result = $this->privDeleteByRule($v_list, $v_options)) != 1) { $this->privSwapBackMagicQuotes(); unset($v_list); return(0); } // ----- Magic quotes trick $this->privSwapBackMagicQuotes(); // ----- Return return $v_list; } // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- // Function : deleteByIndex() // Description : // ***** Deprecated ***** // delete(PCLZIP_OPT_BY_INDEX, $p_index) should be prefered. // -------------------------------------------------------------------------------- function deleteByIndex($p_index) { $p_list = $this->delete(PCLZIP_OPT_BY_INDEX, $p_index); // ----- Return return $p_list; } // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- // Function : properties() // Description : // This method gives the properties of the archive. // The properties are : // nb : Number of files in the archive // comment : Comment associated with the archive file // status : not_exist, ok // Parameters : // None // Return Values : // 0 on failure, // An array with the archive properties. // -------------------------------------------------------------------------------- function properties() { // ----- Reset the error handler $this->privErrorReset(); // ----- Magic quotes trick $this->privDisableMagicQuotes(); // ----- Check archive if (!$this->privCheckFormat()) { $this->privSwapBackMagicQuotes(); return(0); } // ----- Default properties $v_prop = array(); $v_prop['comment'] = ''; $v_prop['nb'] = 0; $v_prop['status'] = 'not_exist'; // ----- Look if file exists if (@is_file($this->zipname)) { // ----- Open the zip file if (($this->zip_fd = @fopen($this->zipname, 'rb')) == 0) { $this->privSwapBackMagicQuotes(); // ----- Error log PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in binary read mode'); // ----- Return return 0; } // ----- Read the central directory informations $v_central_dir = array(); if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) { $this->privSwapBackMagicQuotes(); return 0; } // ----- Close the zip file $this->privCloseFd(); // ----- Set the user attributes $v_prop['comment'] = $v_central_dir['comment']; $v_prop['nb'] = $v_central_dir['entries']; $v_prop['status'] = 'ok'; } // ----- Magic quotes trick $this->privSwapBackMagicQuotes(); // ----- Return return $v_prop; } // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- // Function : duplicate() // Description : // This method creates an archive by copying the content of an other one. If // the archive already exist, it is replaced by the new one without any warning. // Parameters : // $p_archive : The filename of a valid archive, or // a valid PclZip object. // Return Values : // 1 on success. // 0 or a negative value on error (error code). // -------------------------------------------------------------------------------- function duplicate($p_archive) { $v_result = 1; // ----- Reset the error handler $this->privErrorReset(); // ----- Look if the $p_archive is a PclZip object if ((is_object($p_archive)) && (get_class($p_archive) == 'pclzip')) { // ----- Duplicate the archive $v_result = $this->privDuplicate($p_archive->zipname); } // ----- Look if the $p_archive is a string (so a filename) else if (is_string($p_archive)) { // ----- Check that $p_archive is a valid zip file // TBC : Should also check the archive format if (!is_file($p_archive)) { // ----- Error log PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "No file with filename '".$p_archive."'"); $v_result = PCLZIP_ERR_MISSING_FILE; } else { // ----- Duplicate the archive $v_result = $this->privDuplicate($p_archive); } } // ----- Invalid variable else { // ----- Error log PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_archive_to_add"); $v_result = PCLZIP_ERR_INVALID_PARAMETER; } // ----- Return return $v_result; } // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- // Function : merge() // Description : // This method merge the $p_archive_to_add archive at the end of the current // one ($this). // If the archive ($this) does not exist, the merge becomes a duplicate. // If the $p_archive_to_add archive does not exist, the merge is a success. // Parameters : // $p_archive_to_add : It can be directly the filename of a valid zip archive, // or a PclZip object archive. // Return Values : // 1 on success, // 0 or negative values on error (see below). // -------------------------------------------------------------------------------- function merge($p_archive_to_add) { $v_result = 1; // ----- Reset the error handler $this->privErrorReset(); // ----- Check archive if (!$this->privCheckFormat()) { return(0); } // ----- Look if the $p_archive_to_add is a PclZip object if ((is_object($p_archive_to_add)) && (get_class($p_archive_to_add) == 'pclzip')) { // ----- Merge the archive $v_result = $this->privMerge($p_archive_to_add); } // ----- Look if the $p_archive_to_add is a string (so a filename) else if (is_string($p_archive_to_add)) { // ----- Create a temporary archive $v_object_archive = new PclZip($p_archive_to_add); // ----- Merge the archive $v_result = $this->privMerge($v_object_archive); } // ----- Invalid variable else { // ----- Error log PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_archive_to_add"); $v_result = PCLZIP_ERR_INVALID_PARAMETER; } // ----- Return return $v_result; } // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- // Function : errorCode() // Description : // Parameters : // -------------------------------------------------------------------------------- function errorCode() { if (PCLZIP_ERROR_EXTERNAL == 1) { return(PclErrorCode()); } else { return($this->error_code); } } // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- // Function : errorName() // Description : // Parameters : // -------------------------------------------------------------------------------- function errorName($p_with_code=false) { $v_name = array ( PCLZIP_ERR_NO_ERROR => 'PCLZIP_ERR_NO_ERROR', PCLZIP_ERR_WRITE_OPEN_FAIL => 'PCLZIP_ERR_WRITE_OPEN_FAIL', PCLZIP_ERR_READ_OPEN_FAIL => 'PCLZIP_ERR_READ_OPEN_FAIL', PCLZIP_ERR_INVALID_PARAMETER => 'PCLZIP_ERR_INVALID_PARAMETER', PCLZIP_ERR_MISSING_FILE => 'PCLZIP_ERR_MISSING_FILE', PCLZIP_ERR_FILENAME_TOO_LONG => 'PCLZIP_ERR_FILENAME_TOO_LONG', PCLZIP_ERR_INVALID_ZIP => 'PCLZIP_ERR_INVALID_ZIP', PCLZIP_ERR_BAD_EXTRACTED_FILE => 'PCLZIP_ERR_BAD_EXTRACTED_FILE', PCLZIP_ERR_DIR_CREATE_FAIL => 'PCLZIP_ERR_DIR_CREATE_FAIL', PCLZIP_ERR_BAD_EXTENSION => 'PCLZIP_ERR_BAD_EXTENSION', PCLZIP_ERR_BAD_FORMAT => 'PCLZIP_ERR_BAD_FORMAT', PCLZIP_ERR_DELETE_FILE_FAIL => 'PCLZIP_ERR_DELETE_FILE_FAIL', PCLZIP_ERR_RENAME_FILE_FAIL => 'PCLZIP_ERR_RENAME_FILE_FAIL', PCLZIP_ERR_BAD_CHECKSUM => 'PCLZIP_ERR_BAD_CHECKSUM', PCLZIP_ERR_INVALID_ARCHIVE_ZIP => 'PCLZIP_ERR_INVALID_ARCHIVE_ZIP', PCLZIP_ERR_MISSING_OPTION_VALUE => 'PCLZIP_ERR_MISSING_OPTION_VALUE', PCLZIP_ERR_INVALID_OPTION_VALUE => 'PCLZIP_ERR_INVALID_OPTION_VALUE', PCLZIP_ERR_UNSUPPORTED_COMPRESSION => 'PCLZIP_ERR_UNSUPPORTED_COMPRESSION', PCLZIP_ERR_UNSUPPORTED_ENCRYPTION => 'PCLZIP_ERR_UNSUPPORTED_ENCRYPTION' ,PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE => 'PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE' ,PCLZIP_ERR_DIRECTORY_RESTRICTION => 'PCLZIP_ERR_DIRECTORY_RESTRICTION' ); if (isset($v_name[$this->error_code])) { $v_value = $v_name[$this->error_code]; } else { $v_value = 'NoName'; } if ($p_with_code) { return($v_value.' ('.$this->error_code.')'); } else { return($v_value); } } // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- // Function : errorInfo() // Description : // Parameters : // -------------------------------------------------------------------------------- function errorInfo($p_full=false) { if (PCLZIP_ERROR_EXTERNAL == 1) { return(PclErrorString()); } else { if ($p_full) { return($this->errorName(true)." : ".$this->error_string); } else { return($this->error_string." [code ".$this->error_code."]"); } } } // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- // ***** UNDER THIS LINE ARE DEFINED PRIVATE INTERNAL FUNCTIONS ***** // ***** ***** // ***** THESES FUNCTIONS MUST NOT BE USED DIRECTLY ***** // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- // Function : privCheckFormat() // Description : // This method check that the archive exists and is a valid zip archive. // Several level of check exists. (futur) // Parameters : // $p_level : Level of check. Default 0. // 0 : Check the first bytes (magic codes) (default value)) // 1 : 0 + Check the central directory (futur) // 2 : 1 + Check each file header (futur) // Return Values : // true on success, // false on error, the error code is set. // -------------------------------------------------------------------------------- function privCheckFormat($p_level=0) { $v_result = true; // ----- Reset the file system cache clearstatcache(); // ----- Reset the error handler $this->privErrorReset(); // ----- Look if the file exits if (!is_file($this->zipname)) { // ----- Error log PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "Missing archive file '".$this->zipname."'"); return(false); } // ----- Check that the file is readeable if (!is_readable($this->zipname)) { // ----- Error log PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to read archive '".$this->zipname."'"); return(false); } // ----- Check the magic code // TBC // ----- Check the central header // TBC // ----- Check each file header // TBC // ----- Return return $v_result; } // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- // Function : privParseOptions() // Description : // This internal methods reads the variable list of arguments ($p_options_list, // $p_size) and generate an array with the options and values ($v_result_list). // $v_requested_options contains the options that can be present and those that // must be present. // $v_requested_options is an array, with the option value as key, and 'optional', // or 'mandatory' as value. // Parameters : // See above. // Return Values : // 1 on success. // 0 on failure. // -------------------------------------------------------------------------------- function privParseOptions(&$p_options_list, $p_size, &$v_result_list, $v_requested_options=false) { $v_result=1; // ----- Read the options $i=0; while ($i<$p_size) { // ----- Check if the option is supported if (!isset($v_requested_options[$p_options_list[$i]])) { // ----- Error log PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid optional parameter '".$p_options_list[$i]."' for this method"); // ----- Return return PclZip::errorCode(); } // ----- Look for next option switch ($p_options_list[$i]) { // ----- Look for options that request a path value case PCLZIP_OPT_PATH : case PCLZIP_OPT_REMOVE_PATH : case PCLZIP_OPT_ADD_PATH : // ----- Check the number of parameters if (($i+1) >= $p_size) { // ----- Error log PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); // ----- Return return PclZip::errorCode(); } // ----- Get the value $v_result_list[$p_options_list[$i]] = PclZipUtilTranslateWinPath($p_options_list[$i+1], FALSE); $i++; break; case PCLZIP_OPT_TEMP_FILE_THRESHOLD : // ----- Check the number of parameters if (($i+1) >= $p_size) { PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); return PclZip::errorCode(); } // ----- Check for incompatible options if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_OFF])) { PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_OFF'"); return PclZip::errorCode(); } // ----- Check the value $v_value = $p_options_list[$i+1]; if ((!is_integer($v_value)) || ($v_value<0)) { PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Integer expected for option '".PclZipUtilOptionText($p_options_list[$i])."'"); return PclZip::errorCode(); } // ----- Get the value (and convert it in bytes) $v_result_list[$p_options_list[$i]] = $v_value*1048576; $i++; break; case PCLZIP_OPT_TEMP_FILE_ON : // ----- Check for incompatible options if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_OFF])) { PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_OFF'"); return PclZip::errorCode(); } $v_result_list[$p_options_list[$i]] = true; break; case PCLZIP_OPT_TEMP_FILE_OFF : // ----- Check for incompatible options if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_ON])) { PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_ON'"); return PclZip::errorCode(); } // ----- Check for incompatible options if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_THRESHOLD])) { PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_THRESHOLD'"); return PclZip::errorCode(); } $v_result_list[$p_options_list[$i]] = true; break; case PCLZIP_OPT_EXTRACT_DIR_RESTRICTION : // ----- Check the number of parameters if (($i+1) >= $p_size) { // ----- Error log PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); // ----- Return return PclZip::errorCode(); } // ----- Get the value if ( is_string($p_options_list[$i+1]) && ($p_options_list[$i+1] != '')) { $v_result_list[$p_options_list[$i]] = PclZipUtilTranslateWinPath($p_options_list[$i+1], FALSE); $i++; } else { } break; // ----- Look for options that request an array of string for value case PCLZIP_OPT_BY_NAME : // ----- Check the number of parameters if (($i+1) >= $p_size) { // ----- Error log PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); // ----- Return return PclZip::errorCode(); } // ----- Get the value if (is_string($p_options_list[$i+1])) { $v_result_list[$p_options_list[$i]][0] = $p_options_list[$i+1]; } else if (is_array($p_options_list[$i+1])) { $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1]; } else { // ----- Error log PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Wrong parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); // ----- Return return PclZip::errorCode(); } $i++; break; // ----- Look for options that request an EREG or PREG expression case PCLZIP_OPT_BY_EREG : // ereg() is deprecated starting with PHP 5.3. Move PCLZIP_OPT_BY_EREG // to PCLZIP_OPT_BY_PREG $p_options_list[$i] = PCLZIP_OPT_BY_PREG; case PCLZIP_OPT_BY_PREG : //case PCLZIP_OPT_CRYPT : // ----- Check the number of parameters if (($i+1) >= $p_size) { // ----- Error log PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); // ----- Return return PclZip::errorCode(); } // ----- Get the value if (is_string($p_options_list[$i+1])) { $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1]; } else { // ----- Error log PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Wrong parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); // ----- Return return PclZip::errorCode(); } $i++; break; // ----- Look for options that takes a string case PCLZIP_OPT_COMMENT : case PCLZIP_OPT_ADD_COMMENT : case PCLZIP_OPT_PREPEND_COMMENT : // ----- Check the number of parameters if (($i+1) >= $p_size) { // ----- Error log PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '" .PclZipUtilOptionText($p_options_list[$i]) ."'"); // ----- Return return PclZip::errorCode(); } // ----- Get the value if (is_string($p_options_list[$i+1])) { $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1]; } else { // ----- Error log PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Wrong parameter value for option '" .PclZipUtilOptionText($p_options_list[$i]) ."'"); // ----- Return return PclZip::errorCode(); } $i++; break; // ----- Look for options that request an array of index case PCLZIP_OPT_BY_INDEX : // ----- Check the number of parameters if (($i+1) >= $p_size) { // ----- Error log PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); // ----- Return return PclZip::errorCode(); } // ----- Get the value $v_work_list = array(); if (is_string($p_options_list[$i+1])) { // ----- Remove spaces $p_options_list[$i+1] = strtr($p_options_list[$i+1], ' ', ''); // ----- Parse items $v_work_list = explode(",", $p_options_list[$i+1]); } else if (is_integer($p_options_list[$i+1])) { $v_work_list[0] = $p_options_list[$i+1].'-'.$p_options_list[$i+1]; } else if (is_array($p_options_list[$i+1])) { $v_work_list = $p_options_list[$i+1]; } else { // ----- Error log PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Value must be integer, string or array for option '".PclZipUtilOptionText($p_options_list[$i])."'"); // ----- Return return PclZip::errorCode(); } // ----- Reduce the index list // each index item in the list must be a couple with a start and // an end value : [0,3], [5-5], [8-10], ... // ----- Check the format of each item $v_sort_flag=false; $v_sort_value=0; for ($j=0; $j= $p_size) { // ----- Error log PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); // ----- Return return PclZip::errorCode(); } // ----- Get the value $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1]; $i++; break; // ----- Look for options that request a call-back case PCLZIP_CB_PRE_EXTRACT : case PCLZIP_CB_POST_EXTRACT : case PCLZIP_CB_PRE_ADD : case PCLZIP_CB_POST_ADD : /* for futur use case PCLZIP_CB_PRE_DELETE : case PCLZIP_CB_POST_DELETE : case PCLZIP_CB_PRE_LIST : case PCLZIP_CB_POST_LIST : */ // ----- Check the number of parameters if (($i+1) >= $p_size) { // ----- Error log PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); // ----- Return return PclZip::errorCode(); } // ----- Get the value $v_function_name = $p_options_list[$i+1]; // ----- Check that the value is a valid existing function if (!function_exists($v_function_name)) { // ----- Error log PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Function '".$v_function_name."()' is not an existing function for option '".PclZipUtilOptionText($p_options_list[$i])."'"); // ----- Return return PclZip::errorCode(); } // ----- Set the attribute $v_result_list[$p_options_list[$i]] = $v_function_name; $i++; break; default : // ----- Error log PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Unknown parameter '" .$p_options_list[$i]."'"); // ----- Return return PclZip::errorCode(); } // ----- Next options $i++; } // ----- Look for mandatory options if ($v_requested_options !== false) { for ($key=reset($v_requested_options); $key=key($v_requested_options); $key=next($v_requested_options)) { // ----- Look for mandatory option if ($v_requested_options[$key] == 'mandatory') { // ----- Look if present if (!isset($v_result_list[$key])) { // ----- Error log PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Missing mandatory parameter ".PclZipUtilOptionText($key)."(".$key.")"); // ----- Return return PclZip::errorCode(); } } } } // ----- Look for default values if (!isset($v_result_list[PCLZIP_OPT_TEMP_FILE_THRESHOLD])) { } // ----- Return return $v_result; } // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- // Function : privOptionDefaultThreshold() // Description : // Parameters : // Return Values : // -------------------------------------------------------------------------------- function privOptionDefaultThreshold(&$p_options) { $v_result=1; if (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]) || isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) { return $v_result; } // ----- Get 'memory_limit' configuration value $v_memory_limit = ini_get('memory_limit'); $v_memory_limit = trim($v_memory_limit); $last = strtolower(substr($v_memory_limit, -1)); if($last == 'g') //$v_memory_limit = $v_memory_limit*1024*1024*1024; $v_memory_limit = $v_memory_limit*1073741824; if($last == 'm') //$v_memory_limit = $v_memory_limit*1024*1024; $v_memory_limit = $v_memory_limit*1048576; if($last == 'k') $v_memory_limit = $v_memory_limit*1024; $p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] = floor($v_memory_limit*PCLZIP_TEMPORARY_FILE_RATIO); // ----- Sanity check : No threshold if value lower than 1M if ($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] < 1048576) { unset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]); } // ----- Return return $v_result; } // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- // Function : privFileDescrParseAtt() // Description : // Parameters : // Return Values : // 1 on success. // 0 on failure. // -------------------------------------------------------------------------------- function privFileDescrParseAtt(&$p_file_list, &$p_filedescr, $v_options, $v_requested_options=false) { $v_result=1; // ----- For each file in the list check the attributes foreach ($p_file_list as $v_key => $v_value) { // ----- Check if the option is supported if (!isset($v_requested_options[$v_key])) { // ----- Error log PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid file attribute '".$v_key."' for this file"); // ----- Return return PclZip::errorCode(); } // ----- Look for attribute switch ($v_key) { case PCLZIP_ATT_FILE_NAME : if (!is_string($v_value)) { PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'"); return PclZip::errorCode(); } $p_filedescr['filename'] = PclZipUtilPathReduction($v_value); if ($p_filedescr['filename'] == '') { PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid empty filename for attribute '".PclZipUtilOptionText($v_key)."'"); return PclZip::errorCode(); } break; case PCLZIP_ATT_FILE_NEW_SHORT_NAME : if (!is_string($v_value)) { PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'"); return PclZip::errorCode(); } $p_filedescr['new_short_name'] = PclZipUtilPathReduction($v_value); if ($p_filedescr['new_short_name'] == '') { PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid empty short filename for attribute '".PclZipUtilOptionText($v_key)."'"); return PclZip::errorCode(); } break; case PCLZIP_ATT_FILE_NEW_FULL_NAME : if (!is_string($v_value)) { PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'"); return PclZip::errorCode(); } $p_filedescr['new_full_name'] = PclZipUtilPathReduction($v_value); if ($p_filedescr['new_full_name'] == '') { PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid empty full filename for attribute '".PclZipUtilOptionText($v_key)."'"); return PclZip::errorCode(); } break; // ----- Look for options that takes a string case PCLZIP_ATT_FILE_COMMENT : if (!is_string($v_value)) { PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'"); return PclZip::errorCode(); } $p_filedescr['comment'] = $v_value; break; case PCLZIP_ATT_FILE_MTIME : if (!is_integer($v_value)) { PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". Integer expected for attribute '".PclZipUtilOptionText($v_key)."'"); return PclZip::errorCode(); } $p_filedescr['mtime'] = $v_value; break; case PCLZIP_ATT_FILE_CONTENT : $p_filedescr['content'] = $v_value; break; default : // ----- Error log PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Unknown parameter '".$v_key."'"); // ----- Return return PclZip::errorCode(); } // ----- Look for mandatory options if ($v_requested_options !== false) { for ($key=reset($v_requested_options); $key=key($v_requested_options); $key=next($v_requested_options)) { // ----- Look for mandatory option if ($v_requested_options[$key] == 'mandatory') { // ----- Look if present if (!isset($p_file_list[$key])) { PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Missing mandatory parameter ".PclZipUtilOptionText($key)."(".$key.")"); return PclZip::errorCode(); } } } } // end foreach } // ----- Return return $v_result; } // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- // Function : privFileDescrExpand() // Description : // This method look for each item of the list to see if its a file, a folder // or a string to be added as file. For any other type of files (link, other) // just ignore the item. // Then prepare the information that will be stored for that file. // When its a folder, expand the folder with all the files that are in that // folder (recursively). // Parameters : // Return Values : // 1 on success. // 0 on failure. // -------------------------------------------------------------------------------- function privFileDescrExpand(&$p_filedescr_list, &$p_options) { $v_result=1; // ----- Create a result list $v_result_list = array(); // ----- Look each entry for ($i=0; $iprivCalculateStoredFilename($v_descr, $p_options); // ----- Add the descriptor in result list $v_result_list[sizeof($v_result_list)] = $v_descr; // ----- Look for folder if ($v_descr['type'] == 'folder') { // ----- List of items in folder $v_dirlist_descr = array(); $v_dirlist_nb = 0; if ($v_folder_handler = @opendir($v_descr['filename'])) { while (($v_item_handler = @readdir($v_folder_handler)) !== false) { // ----- Skip '.' and '..' if (($v_item_handler == '.') || ($v_item_handler == '..')) { continue; } // ----- Compose the full filename $v_dirlist_descr[$v_dirlist_nb]['filename'] = $v_descr['filename'].'/'.$v_item_handler; // ----- Look for different stored filename // Because the name of the folder was changed, the name of the // files/sub-folders also change if (($v_descr['stored_filename'] != $v_descr['filename']) && (!isset($p_options[PCLZIP_OPT_REMOVE_ALL_PATH]))) { if ($v_descr['stored_filename'] != '') { $v_dirlist_descr[$v_dirlist_nb]['new_full_name'] = $v_descr['stored_filename'].'/'.$v_item_handler; } else { $v_dirlist_descr[$v_dirlist_nb]['new_full_name'] = $v_item_handler; } } $v_dirlist_nb++; } @closedir($v_folder_handler); } else { // TBC : unable to open folder in read mode } // ----- Expand each element of the list if ($v_dirlist_nb != 0) { // ----- Expand if (($v_result = $this->privFileDescrExpand($v_dirlist_descr, $p_options)) != 1) { return $v_result; } // ----- Concat the resulting list $v_result_list = array_merge($v_result_list, $v_dirlist_descr); } else { } // ----- Free local array unset($v_dirlist_descr); } } // ----- Get the result list $p_filedescr_list = $v_result_list; // ----- Return return $v_result; } // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- // Function : privCreate() // Description : // Parameters : // Return Values : // -------------------------------------------------------------------------------- function privCreate($p_filedescr_list, &$p_result_list, &$p_options) { $v_result=1; $v_list_detail = array(); // ----- Magic quotes trick $this->privDisableMagicQuotes(); // ----- Open the file in write mode if (($v_result = $this->privOpenFd('wb')) != 1) { // ----- Return return $v_result; } // ----- Add the list of files $v_result = $this->privAddList($p_filedescr_list, $p_result_list, $p_options); // ----- Close $this->privCloseFd(); // ----- Magic quotes trick $this->privSwapBackMagicQuotes(); // ----- Return return $v_result; } // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- // Function : privAdd() // Description : // Parameters : // Return Values : // -------------------------------------------------------------------------------- function privAdd($p_filedescr_list, &$p_result_list, &$p_options) { $v_result=1; $v_list_detail = array(); // ----- Look if the archive exists or is empty if ((!is_file($this->zipname)) || (filesize($this->zipname) == 0)) { // ----- Do a create $v_result = $this->privCreate($p_filedescr_list, $p_result_list, $p_options); // ----- Return return $v_result; } // ----- Magic quotes trick $this->privDisableMagicQuotes(); // ----- Open the zip file if (($v_result=$this->privOpenFd('rb')) != 1) { // ----- Magic quotes trick $this->privSwapBackMagicQuotes(); // ----- Return return $v_result; } // ----- Read the central directory informations $v_central_dir = array(); if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) { $this->privCloseFd(); $this->privSwapBackMagicQuotes(); return $v_result; } // ----- Go to beginning of File @rewind($this->zip_fd); // ----- Creates a temporay file $v_zip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.tmp'; // ----- Open the temporary file in write mode if (($v_zip_temp_fd = @fopen($v_zip_temp_name, 'wb')) == 0) { $this->privCloseFd(); $this->privSwapBackMagicQuotes(); PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_zip_temp_name.'\' in binary write mode'); // ----- Return return PclZip::errorCode(); } // ----- Copy the files from the archive to the temporary file // TBC : Here I should better append the file and go back to erase the central dir $v_size = $v_central_dir['offset']; while ($v_size != 0) { $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); $v_buffer = fread($this->zip_fd, $v_read_size); @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); $v_size -= $v_read_size; } // ----- Swap the file descriptor // Here is a trick : I swap the temporary fd with the zip fd, in order to use // the following methods on the temporary fil and not the real archive $v_swap = $this->zip_fd; $this->zip_fd = $v_zip_temp_fd; $v_zip_temp_fd = $v_swap; // ----- Add the files $v_header_list = array(); if (($v_result = $this->privAddFileList($p_filedescr_list, $v_header_list, $p_options)) != 1) { fclose($v_zip_temp_fd); $this->privCloseFd(); @unlink($v_zip_temp_name); $this->privSwapBackMagicQuotes(); // ----- Return return $v_result; } // ----- Store the offset of the central dir $v_offset = @ftell($this->zip_fd); // ----- Copy the block of file headers from the old archive $v_size = $v_central_dir['size']; while ($v_size != 0) { $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); $v_buffer = @fread($v_zip_temp_fd, $v_read_size); @fwrite($this->zip_fd, $v_buffer, $v_read_size); $v_size -= $v_read_size; } // ----- Create the Central Dir files header for ($i=0, $v_count=0; $iprivWriteCentralFileHeader($v_header_list[$i])) != 1) { fclose($v_zip_temp_fd); $this->privCloseFd(); @unlink($v_zip_temp_name); $this->privSwapBackMagicQuotes(); // ----- Return return $v_result; } $v_count++; } // ----- Transform the header to a 'usable' info $this->privConvertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]); } // ----- Zip file comment $v_comment = $v_central_dir['comment']; if (isset($p_options[PCLZIP_OPT_COMMENT])) { $v_comment = $p_options[PCLZIP_OPT_COMMENT]; } if (isset($p_options[PCLZIP_OPT_ADD_COMMENT])) { $v_comment = $v_comment.$p_options[PCLZIP_OPT_ADD_COMMENT]; } if (isset($p_options[PCLZIP_OPT_PREPEND_COMMENT])) { $v_comment = $p_options[PCLZIP_OPT_PREPEND_COMMENT].$v_comment; } // ----- Calculate the size of the central header $v_size = @ftell($this->zip_fd)-$v_offset; // ----- Create the central dir footer if (($v_result = $this->privWriteCentralHeader($v_count+$v_central_dir['entries'], $v_size, $v_offset, $v_comment)) != 1) { // ----- Reset the file list unset($v_header_list); $this->privSwapBackMagicQuotes(); // ----- Return return $v_result; } // ----- Swap back the file descriptor $v_swap = $this->zip_fd; $this->zip_fd = $v_zip_temp_fd; $v_zip_temp_fd = $v_swap; // ----- Close $this->privCloseFd(); // ----- Close the temporary file @fclose($v_zip_temp_fd); // ----- Magic quotes trick $this->privSwapBackMagicQuotes(); // ----- Delete the zip file // TBC : I should test the result ... @unlink($this->zipname); // ----- Rename the temporary file // TBC : I should test the result ... //@rename($v_zip_temp_name, $this->zipname); PclZipUtilRename($v_zip_temp_name, $this->zipname); // ----- Return return $v_result; } // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- // Function : privOpenFd() // Description : // Parameters : // -------------------------------------------------------------------------------- function privOpenFd($p_mode) { $v_result=1; // ----- Look if already open if ($this->zip_fd != 0) { // ----- Error log PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Zip file \''.$this->zipname.'\' already open'); // ----- Return return PclZip::errorCode(); } // ----- Open the zip file if (($this->zip_fd = @fopen($this->zipname, $p_mode)) == 0) { // ----- Error log PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in '.$p_mode.' mode'); // ----- Return return PclZip::errorCode(); } // ----- Return return $v_result; } // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- // Function : privCloseFd() // Description : // Parameters : // -------------------------------------------------------------------------------- function privCloseFd() { $v_result=1; if ($this->zip_fd != 0) @fclose($this->zip_fd); $this->zip_fd = 0; // ----- Return return $v_result; } // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- // Function : privAddList() // Description : // $p_add_dir and $p_remove_dir will give the ability to memorize a path which is // different from the real path of the file. This is usefull if you want to have PclTar // running in any directory, and memorize relative path from an other directory. // Parameters : // $p_list : An array containing the file or directory names to add in the tar // $p_result_list : list of added files with their properties (specially the status field) // $p_add_dir : Path to add in the filename path archived // $p_remove_dir : Path to remove in the filename path archived // Return Values : // -------------------------------------------------------------------------------- // function privAddList($p_list, &$p_result_list, $p_add_dir, $p_remove_dir, $p_remove_all_dir, &$p_options) function privAddList($p_filedescr_list, &$p_result_list, &$p_options) { $v_result=1; // ----- Add the files $v_header_list = array(); if (($v_result = $this->privAddFileList($p_filedescr_list, $v_header_list, $p_options)) != 1) { // ----- Return return $v_result; } // ----- Store the offset of the central dir $v_offset = @ftell($this->zip_fd); // ----- Create the Central Dir files header for ($i=0,$v_count=0; $iprivWriteCentralFileHeader($v_header_list[$i])) != 1) { // ----- Return return $v_result; } $v_count++; } // ----- Transform the header to a 'usable' info $this->privConvertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]); } // ----- Zip file comment $v_comment = ''; if (isset($p_options[PCLZIP_OPT_COMMENT])) { $v_comment = $p_options[PCLZIP_OPT_COMMENT]; } // ----- Calculate the size of the central header $v_size = @ftell($this->zip_fd)-$v_offset; // ----- Create the central dir footer if (($v_result = $this->privWriteCentralHeader($v_count, $v_size, $v_offset, $v_comment)) != 1) { // ----- Reset the file list unset($v_header_list); // ----- Return return $v_result; } // ----- Return return $v_result; } // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- // Function : privAddFileList() // Description : // Parameters : // $p_filedescr_list : An array containing the file description // or directory names to add in the zip // $p_result_list : list of added files with their properties (specially the status field) // Return Values : // -------------------------------------------------------------------------------- function privAddFileList($p_filedescr_list, &$p_result_list, &$p_options) { $v_result=1; $v_header = array(); // ----- Recuperate the current number of elt in list $v_nb = sizeof($p_result_list); // ----- Loop on the files for ($j=0; ($jprivAddFile($p_filedescr_list[$j], $v_header, $p_options); if ($v_result != 1) { return $v_result; } // ----- Store the file infos $p_result_list[$v_nb++] = $v_header; } } // ----- Return return $v_result; } // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- // Function : privAddFile() // Description : // Parameters : // Return Values : // -------------------------------------------------------------------------------- function privAddFile($p_filedescr, &$p_header, &$p_options) { $v_result=1; // ----- Working variable $p_filename = $p_filedescr['filename']; // TBC : Already done in the fileAtt check ... ? if ($p_filename == "") { // ----- Error log PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid file list parameter (invalid or empty list)"); // ----- Return return PclZip::errorCode(); } // ----- Look for a stored different filename /* TBC : Removed if (isset($p_filedescr['stored_filename'])) { $v_stored_filename = $p_filedescr['stored_filename']; } else { $v_stored_filename = $p_filedescr['stored_filename']; } */ // ----- Set the file properties clearstatcache(); $p_header['version'] = 20; $p_header['version_extracted'] = 10; $p_header['flag'] = 0; $p_header['compression'] = 0; $p_header['crc'] = 0; $p_header['compressed_size'] = 0; $p_header['filename_len'] = strlen($p_filename); $p_header['extra_len'] = 0; $p_header['disk'] = 0; $p_header['internal'] = 0; $p_header['offset'] = 0; $p_header['filename'] = $p_filename; // TBC : Removed $p_header['stored_filename'] = $v_stored_filename; $p_header['stored_filename'] = $p_filedescr['stored_filename']; $p_header['extra'] = ''; $p_header['status'] = 'ok'; $p_header['index'] = -1; // ----- Look for regular file if ($p_filedescr['type']=='file') { $p_header['external'] = 0x00000000; $p_header['size'] = filesize($p_filename); } // ----- Look for regular folder else if ($p_filedescr['type']=='folder') { $p_header['external'] = 0x00000010; $p_header['mtime'] = filemtime($p_filename); $p_header['size'] = filesize($p_filename); } // ----- Look for virtual file else if ($p_filedescr['type'] == 'virtual_file') { $p_header['external'] = 0x00000000; $p_header['size'] = strlen($p_filedescr['content']); } // ----- Look for filetime if (isset($p_filedescr['mtime'])) { $p_header['mtime'] = $p_filedescr['mtime']; } else if ($p_filedescr['type'] == 'virtual_file') { $p_header['mtime'] = time(); } else { $p_header['mtime'] = filemtime($p_filename); } // ------ Look for file comment if (isset($p_filedescr['comment'])) { $p_header['comment_len'] = strlen($p_filedescr['comment']); $p_header['comment'] = $p_filedescr['comment']; } else { $p_header['comment_len'] = 0; $p_header['comment'] = ''; } // ----- Look for pre-add callback if (isset($p_options[PCLZIP_CB_PRE_ADD])) { // ----- Generate a local information $v_local_header = array(); $this->privConvertHeader2FileInfo($p_header, $v_local_header); // ----- Call the callback // Here I do not use call_user_func() because I need to send a reference to the // header. $v_result = $p_options[PCLZIP_CB_PRE_ADD](PCLZIP_CB_PRE_ADD, $v_local_header); if ($v_result == 0) { // ----- Change the file status $p_header['status'] = "skipped"; $v_result = 1; } // ----- Update the informations // Only some fields can be modified if ($p_header['stored_filename'] != $v_local_header['stored_filename']) { $p_header['stored_filename'] = PclZipUtilPathReduction($v_local_header['stored_filename']); } } // ----- Look for empty stored filename if ($p_header['stored_filename'] == "") { $p_header['status'] = "filtered"; } // ----- Check the path length if (strlen($p_header['stored_filename']) > 0xFF) { $p_header['status'] = 'filename_too_long'; } // ----- Look if no error, or file not skipped if ($p_header['status'] == 'ok') { // ----- Look for a file if ($p_filedescr['type'] == 'file') { // ----- Look for using temporary file to zip if ( (!isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) && (isset($p_options[PCLZIP_OPT_TEMP_FILE_ON]) || (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]) && ($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] <= $p_header['size'])) ) ) { $v_result = $this->privAddFileUsingTempFile($p_filedescr, $p_header, $p_options); if ($v_result < PCLZIP_ERR_NO_ERROR) { return $v_result; } } // ----- Use "in memory" zip algo else { // ----- Open the source file if (($v_file = @fopen($p_filename, "rb")) == 0) { PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to open file '$p_filename' in binary read mode"); return PclZip::errorCode(); } // ----- Read the file content $v_content = @fread($v_file, $p_header['size']); // ----- Close the file @fclose($v_file); // ----- Calculate the CRC $p_header['crc'] = @crc32($v_content); // ----- Look for no compression if ($p_options[PCLZIP_OPT_NO_COMPRESSION]) { // ----- Set header parameters $p_header['compressed_size'] = $p_header['size']; $p_header['compression'] = 0; } // ----- Look for normal compression else { // ----- Compress the content $v_content = @gzdeflate($v_content); // ----- Set header parameters $p_header['compressed_size'] = strlen($v_content); $p_header['compression'] = 8; } // ----- Call the header generation if (($v_result = $this->privWriteFileHeader($p_header)) != 1) { @fclose($v_file); return $v_result; } // ----- Write the compressed (or not) content @fwrite($this->zip_fd, $v_content, $p_header['compressed_size']); } } // ----- Look for a virtual file (a file from string) else if ($p_filedescr['type'] == 'virtual_file') { $v_content = $p_filedescr['content']; // ----- Calculate the CRC $p_header['crc'] = @crc32($v_content); // ----- Look for no compression if ($p_options[PCLZIP_OPT_NO_COMPRESSION]) { // ----- Set header parameters $p_header['compressed_size'] = $p_header['size']; $p_header['compression'] = 0; } // ----- Look for normal compression else { // ----- Compress the content $v_content = @gzdeflate($v_content); // ----- Set header parameters $p_header['compressed_size'] = strlen($v_content); $p_header['compression'] = 8; } // ----- Call the header generation if (($v_result = $this->privWriteFileHeader($p_header)) != 1) { @fclose($v_file); return $v_result; } // ----- Write the compressed (or not) content @fwrite($this->zip_fd, $v_content, $p_header['compressed_size']); } // ----- Look for a directory else if ($p_filedescr['type'] == 'folder') { // ----- Look for directory last '/' if (@substr($p_header['stored_filename'], -1) != '/') { $p_header['stored_filename'] .= '/'; } // ----- Set the file properties $p_header['size'] = 0; //$p_header['external'] = 0x41FF0010; // Value for a folder : to be checked $p_header['external'] = 0x00000010; // Value for a folder : to be checked // ----- Call the header generation if (($v_result = $this->privWriteFileHeader($p_header)) != 1) { return $v_result; } } } // ----- Look for post-add callback if (isset($p_options[PCLZIP_CB_POST_ADD])) { // ----- Generate a local information $v_local_header = array(); $this->privConvertHeader2FileInfo($p_header, $v_local_header); // ----- Call the callback // Here I do not use call_user_func() because I need to send a reference to the // header. $v_result = $p_options[PCLZIP_CB_POST_ADD](PCLZIP_CB_POST_ADD, $v_local_header); if ($v_result == 0) { // ----- Ignored $v_result = 1; } // ----- Update the informations // Nothing can be modified } // ----- Return return $v_result; } // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- // Function : privAddFileUsingTempFile() // Description : // Parameters : // Return Values : // -------------------------------------------------------------------------------- function privAddFileUsingTempFile($p_filedescr, &$p_header, &$p_options) { $v_result=PCLZIP_ERR_NO_ERROR; // ----- Working variable $p_filename = $p_filedescr['filename']; // ----- Open the source file if (($v_file = @fopen($p_filename, "rb")) == 0) { PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to open file '$p_filename' in binary read mode"); return PclZip::errorCode(); } // ----- Creates a compressed temporary file $v_gzip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.gz'; if (($v_file_compressed = @gzopen($v_gzip_temp_name, "wb")) == 0) { fclose($v_file); PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary write mode'); return PclZip::errorCode(); } // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks $v_size = filesize($p_filename); while ($v_size != 0) { $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); $v_buffer = @fread($v_file, $v_read_size); //$v_binary_data = pack('a'.$v_read_size, $v_buffer); @gzputs($v_file_compressed, $v_buffer, $v_read_size); $v_size -= $v_read_size; } // ----- Close the file @fclose($v_file); @gzclose($v_file_compressed); // ----- Check the minimum file size if (filesize($v_gzip_temp_name) < 18) { PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'gzip temporary file \''.$v_gzip_temp_name.'\' has invalid filesize - should be minimum 18 bytes'); return PclZip::errorCode(); } // ----- Extract the compressed attributes if (($v_file_compressed = @fopen($v_gzip_temp_name, "rb")) == 0) { PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary read mode'); return PclZip::errorCode(); } // ----- Read the gzip file header $v_binary_data = @fread($v_file_compressed, 10); $v_data_header = unpack('a1id1/a1id2/a1cm/a1flag/Vmtime/a1xfl/a1os', $v_binary_data); // ----- Check some parameters $v_data_header['os'] = bin2hex($v_data_header['os']); // ----- Read the gzip file footer @fseek($v_file_compressed, filesize($v_gzip_temp_name)-8); $v_binary_data = @fread($v_file_compressed, 8); $v_data_footer = unpack('Vcrc/Vcompressed_size', $v_binary_data); // ----- Set the attributes $p_header['compression'] = ord($v_data_header['cm']); //$p_header['mtime'] = $v_data_header['mtime']; $p_header['crc'] = $v_data_footer['crc']; $p_header['compressed_size'] = filesize($v_gzip_temp_name)-18; // ----- Close the file @fclose($v_file_compressed); // ----- Call the header generation if (($v_result = $this->privWriteFileHeader($p_header)) != 1) { return $v_result; } // ----- Add the compressed data if (($v_file_compressed = @fopen($v_gzip_temp_name, "rb")) == 0) { PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary read mode'); return PclZip::errorCode(); } // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks fseek($v_file_compressed, 10); $v_size = $p_header['compressed_size']; while ($v_size != 0) { $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); $v_buffer = @fread($v_file_compressed, $v_read_size); //$v_binary_data = pack('a'.$v_read_size, $v_buffer); @fwrite($this->zip_fd, $v_buffer, $v_read_size); $v_size -= $v_read_size; } // ----- Close the file @fclose($v_file_compressed); // ----- Unlink the temporary file @unlink($v_gzip_temp_name); // ----- Return return $v_result; } // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- // Function : privCalculateStoredFilename() // Description : // Based on file descriptor properties and global options, this method // calculate the filename that will be stored in the archive. // Parameters : // Return Values : // -------------------------------------------------------------------------------- function privCalculateStoredFilename(&$p_filedescr, &$p_options) { $v_result=1; // ----- Working variables $p_filename = $p_filedescr['filename']; if (isset($p_options[PCLZIP_OPT_ADD_PATH])) { $p_add_dir = $p_options[PCLZIP_OPT_ADD_PATH]; } else { $p_add_dir = ''; } if (isset($p_options[PCLZIP_OPT_REMOVE_PATH])) { $p_remove_dir = $p_options[PCLZIP_OPT_REMOVE_PATH]; } else { $p_remove_dir = ''; } if (isset($p_options[PCLZIP_OPT_REMOVE_ALL_PATH])) { $p_remove_all_dir = $p_options[PCLZIP_OPT_REMOVE_ALL_PATH]; } else { $p_remove_all_dir = 0; } // ----- Look for full name change if (isset($p_filedescr['new_full_name'])) { // ----- Remove drive letter if any $v_stored_filename = PclZipUtilTranslateWinPath($p_filedescr['new_full_name']); } // ----- Look for path and/or short name change else { // ----- Look for short name change // Its when we cahnge just the filename but not the path if (isset($p_filedescr['new_short_name'])) { $v_path_info = pathinfo($p_filename); $v_dir = ''; if ($v_path_info['dirname'] != '') { $v_dir = $v_path_info['dirname'].'/'; } $v_stored_filename = $v_dir.$p_filedescr['new_short_name']; } else { // ----- Calculate the stored filename $v_stored_filename = $p_filename; } // ----- Look for all path to remove if ($p_remove_all_dir) { $v_stored_filename = basename($p_filename); } // ----- Look for partial path remove else if ($p_remove_dir != "") { if (substr($p_remove_dir, -1) != '/') $p_remove_dir .= "/"; if ( (substr($p_filename, 0, 2) == "./") || (substr($p_remove_dir, 0, 2) == "./")) { if ( (substr($p_filename, 0, 2) == "./") && (substr($p_remove_dir, 0, 2) != "./")) { $p_remove_dir = "./".$p_remove_dir; } if ( (substr($p_filename, 0, 2) != "./") && (substr($p_remove_dir, 0, 2) == "./")) { $p_remove_dir = substr($p_remove_dir, 2); } } $v_compare = PclZipUtilPathInclusion($p_remove_dir, $v_stored_filename); if ($v_compare > 0) { if ($v_compare == 2) { $v_stored_filename = ""; } else { $v_stored_filename = substr($v_stored_filename, strlen($p_remove_dir)); } } } // ----- Remove drive letter if any $v_stored_filename = PclZipUtilTranslateWinPath($v_stored_filename); // ----- Look for path to add if ($p_add_dir != "") { if (substr($p_add_dir, -1) == "/") $v_stored_filename = $p_add_dir.$v_stored_filename; else $v_stored_filename = $p_add_dir."/".$v_stored_filename; } } // ----- Filename (reduce the path of stored name) $v_stored_filename = PclZipUtilPathReduction($v_stored_filename); $p_filedescr['stored_filename'] = $v_stored_filename; // ----- Return return $v_result; } // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- // Function : privWriteFileHeader() // Description : // Parameters : // Return Values : // -------------------------------------------------------------------------------- function privWriteFileHeader(&$p_header) { $v_result=1; // ----- Store the offset position of the file $p_header['offset'] = ftell($this->zip_fd); // ----- Transform UNIX mtime to DOS format mdate/mtime $v_date = getdate($p_header['mtime']); $v_mtime = ($v_date['hours']<<11) + ($v_date['minutes']<<5) + $v_date['seconds']/2; $v_mdate = (($v_date['year']-1980)<<9) + ($v_date['mon']<<5) + $v_date['mday']; // ----- Packed data $v_binary_data = pack("VvvvvvVVVvv", 0x04034b50, $p_header['version_extracted'], $p_header['flag'], $p_header['compression'], $v_mtime, $v_mdate, $p_header['crc'], $p_header['compressed_size'], $p_header['size'], strlen($p_header['stored_filename']), $p_header['extra_len']); // ----- Write the first 148 bytes of the header in the archive fputs($this->zip_fd, $v_binary_data, 30); // ----- Write the variable fields if (strlen($p_header['stored_filename']) != 0) { fputs($this->zip_fd, $p_header['stored_filename'], strlen($p_header['stored_filename'])); } if ($p_header['extra_len'] != 0) { fputs($this->zip_fd, $p_header['extra'], $p_header['extra_len']); } // ----- Return return $v_result; } // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- // Function : privWriteCentralFileHeader() // Description : // Parameters : // Return Values : // -------------------------------------------------------------------------------- function privWriteCentralFileHeader(&$p_header) { $v_result=1; // TBC //for(reset($p_header); $key = key($p_header); next($p_header)) { //} // ----- Transform UNIX mtime to DOS format mdate/mtime $v_date = getdate($p_header['mtime']); $v_mtime = ($v_date['hours']<<11) + ($v_date['minutes']<<5) + $v_date['seconds']/2; $v_mdate = (($v_date['year']-1980)<<9) + ($v_date['mon']<<5) + $v_date['mday']; // ----- Packed data $v_binary_data = pack("VvvvvvvVVVvvvvvVV", 0x02014b50, $p_header['version'], $p_header['version_extracted'], $p_header['flag'], $p_header['compression'], $v_mtime, $v_mdate, $p_header['crc'], $p_header['compressed_size'], $p_header['size'], strlen($p_header['stored_filename']), $p_header['extra_len'], $p_header['comment_len'], $p_header['disk'], $p_header['internal'], $p_header['external'], $p_header['offset']); // ----- Write the 42 bytes of the header in the zip file fputs($this->zip_fd, $v_binary_data, 46); // ----- Write the variable fields if (strlen($p_header['stored_filename']) != 0) { fputs($this->zip_fd, $p_header['stored_filename'], strlen($p_header['stored_filename'])); } if ($p_header['extra_len'] != 0) { fputs($this->zip_fd, $p_header['extra'], $p_header['extra_len']); } if ($p_header['comment_len'] != 0) { fputs($this->zip_fd, $p_header['comment'], $p_header['comment_len']); } // ----- Return return $v_result; } // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- // Function : privWriteCentralHeader() // Description : // Parameters : // Return Values : // -------------------------------------------------------------------------------- function privWriteCentralHeader($p_nb_entries, $p_size, $p_offset, $p_comment) { $v_result=1; // ----- Packed data $v_binary_data = pack("VvvvvVVv", 0x06054b50, 0, 0, $p_nb_entries, $p_nb_entries, $p_size, $p_offset, strlen($p_comment)); // ----- Write the 22 bytes of the header in the zip file fputs($this->zip_fd, $v_binary_data, 22); // ----- Write the variable fields if (strlen($p_comment) != 0) { fputs($this->zip_fd, $p_comment, strlen($p_comment)); } // ----- Return return $v_result; } // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- // Function : privList() // Description : // Parameters : // Return Values : // -------------------------------------------------------------------------------- function privList(&$p_list) { $v_result=1; // ----- Magic quotes trick $this->privDisableMagicQuotes(); // ----- Open the zip file if (($this->zip_fd = @fopen($this->zipname, 'rb')) == 0) { // ----- Magic quotes trick $this->privSwapBackMagicQuotes(); // ----- Error log PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in binary read mode'); // ----- Return return PclZip::errorCode(); } // ----- Read the central directory informations $v_central_dir = array(); if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) { $this->privSwapBackMagicQuotes(); return $v_result; } // ----- Go to beginning of Central Dir @rewind($this->zip_fd); if (@fseek($this->zip_fd, $v_central_dir['offset'])) { $this->privSwapBackMagicQuotes(); // ----- Error log PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); // ----- Return return PclZip::errorCode(); } // ----- Read each entry for ($i=0; $i<$v_central_dir['entries']; $i++) { // ----- Read the file header if (($v_result = $this->privReadCentralFileHeader($v_header)) != 1) { $this->privSwapBackMagicQuotes(); return $v_result; } $v_header['index'] = $i; // ----- Get the only interesting attributes $this->privConvertHeader2FileInfo($v_header, $p_list[$i]); unset($v_header); } // ----- Close the zip file $this->privCloseFd(); // ----- Magic quotes trick $this->privSwapBackMagicQuotes(); // ----- Return return $v_result; } // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- // Function : privConvertHeader2FileInfo() // Description : // This function takes the file informations from the central directory // entries and extract the interesting parameters that will be given back. // The resulting file infos are set in the array $p_info // $p_info['filename'] : Filename with full path. Given by user (add), // extracted in the filesystem (extract). // $p_info['stored_filename'] : Stored filename in the archive. // $p_info['size'] = Size of the file. // $p_info['compressed_size'] = Compressed size of the file. // $p_info['mtime'] = Last modification date of the file. // $p_info['comment'] = Comment associated with the file. // $p_info['folder'] = true/false : indicates if the entry is a folder or not. // $p_info['status'] = status of the action on the file. // $p_info['crc'] = CRC of the file content. // Parameters : // Return Values : // -------------------------------------------------------------------------------- function privConvertHeader2FileInfo($p_header, &$p_info) { $v_result=1; // ----- Get the interesting attributes $v_temp_path = PclZipUtilPathReduction($p_header['filename']); $p_info['filename'] = $v_temp_path; $v_temp_path = PclZipUtilPathReduction($p_header['stored_filename']); $p_info['stored_filename'] = $v_temp_path; $p_info['size'] = $p_header['size']; $p_info['compressed_size'] = $p_header['compressed_size']; $p_info['mtime'] = $p_header['mtime']; $p_info['comment'] = $p_header['comment']; $p_info['folder'] = (($p_header['external']&0x00000010)==0x00000010); $p_info['index'] = $p_header['index']; $p_info['status'] = $p_header['status']; $p_info['crc'] = $p_header['crc']; // ----- Return return $v_result; } // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- // Function : privExtractByRule() // Description : // Extract a file or directory depending of rules (by index, by name, ...) // Parameters : // $p_file_list : An array where will be placed the properties of each // extracted file // $p_path : Path to add while writing the extracted files // $p_remove_path : Path to remove (from the file memorized path) while writing the // extracted files. If the path does not match the file path, // the file is extracted with its memorized path. // $p_remove_path does not apply to 'list' mode. // $p_path and $p_remove_path are commulative. // Return Values : // 1 on success,0 or less on error (see error code list) // -------------------------------------------------------------------------------- function privExtractByRule(&$p_file_list, $p_path, $p_remove_path, $p_remove_all_path, &$p_options) { $v_result=1; // ----- Magic quotes trick $this->privDisableMagicQuotes(); // ----- Check the path if ( ($p_path == "") || ( (substr($p_path, 0, 1) != "/") && (substr($p_path, 0, 3) != "../") && (substr($p_path,1,2)!=":/"))) $p_path = "./".$p_path; // ----- Reduce the path last (and duplicated) '/' if (($p_path != "./") && ($p_path != "/")) { // ----- Look for the path end '/' while (substr($p_path, -1) == "/") { $p_path = substr($p_path, 0, strlen($p_path)-1); } } // ----- Look for path to remove format (should end by /) if (($p_remove_path != "") && (substr($p_remove_path, -1) != '/')) { $p_remove_path .= '/'; } $p_remove_path_size = strlen($p_remove_path); // ----- Open the zip file if (($v_result = $this->privOpenFd('rb')) != 1) { $this->privSwapBackMagicQuotes(); return $v_result; } // ----- Read the central directory informations $v_central_dir = array(); if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) { // ----- Close the zip file $this->privCloseFd(); $this->privSwapBackMagicQuotes(); return $v_result; } // ----- Start at beginning of Central Dir $v_pos_entry = $v_central_dir['offset']; // ----- Read each entry $j_start = 0; for ($i=0, $v_nb_extracted=0; $i<$v_central_dir['entries']; $i++) { // ----- Read next Central dir entry @rewind($this->zip_fd); if (@fseek($this->zip_fd, $v_pos_entry)) { // ----- Close the zip file $this->privCloseFd(); $this->privSwapBackMagicQuotes(); // ----- Error log PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); // ----- Return return PclZip::errorCode(); } // ----- Read the file header $v_header = array(); if (($v_result = $this->privReadCentralFileHeader($v_header)) != 1) { // ----- Close the zip file $this->privCloseFd(); $this->privSwapBackMagicQuotes(); return $v_result; } // ----- Store the index $v_header['index'] = $i; // ----- Store the file position $v_pos_entry = ftell($this->zip_fd); // ----- Look for the specific extract rules $v_extract = false; // ----- Look for extract by name rule if ( (isset($p_options[PCLZIP_OPT_BY_NAME])) && ($p_options[PCLZIP_OPT_BY_NAME] != 0)) { // ----- Look if the filename is in the list for ($j=0; ($j strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) && (substr($v_header['stored_filename'], 0, strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) == $p_options[PCLZIP_OPT_BY_NAME][$j])) { $v_extract = true; } } // ----- Look for a filename elseif ($v_header['stored_filename'] == $p_options[PCLZIP_OPT_BY_NAME][$j]) { $v_extract = true; } } } // ----- Look for extract by ereg rule // ereg() is deprecated with PHP 5.3 /* else if ( (isset($p_options[PCLZIP_OPT_BY_EREG])) && ($p_options[PCLZIP_OPT_BY_EREG] != "")) { if (ereg($p_options[PCLZIP_OPT_BY_EREG], $v_header['stored_filename'])) { $v_extract = true; } } */ // ----- Look for extract by preg rule else if ( (isset($p_options[PCLZIP_OPT_BY_PREG])) && ($p_options[PCLZIP_OPT_BY_PREG] != "")) { if (preg_match($p_options[PCLZIP_OPT_BY_PREG], $v_header['stored_filename'])) { $v_extract = true; } } // ----- Look for extract by index rule else if ( (isset($p_options[PCLZIP_OPT_BY_INDEX])) && ($p_options[PCLZIP_OPT_BY_INDEX] != 0)) { // ----- Look if the index is in the list for ($j=$j_start; ($j=$p_options[PCLZIP_OPT_BY_INDEX][$j]['start']) && ($i<=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end'])) { $v_extract = true; } if ($i>=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end']) { $j_start = $j+1; } if ($p_options[PCLZIP_OPT_BY_INDEX][$j]['start']>$i) { break; } } } // ----- Look for no rule, which means extract all the archive else { $v_extract = true; } // ----- Check compression method if ( ($v_extract) && ( ($v_header['compression'] != 8) && ($v_header['compression'] != 0))) { $v_header['status'] = 'unsupported_compression'; // ----- Look for PCLZIP_OPT_STOP_ON_ERROR if ( (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) { $this->privSwapBackMagicQuotes(); PclZip::privErrorLog(PCLZIP_ERR_UNSUPPORTED_COMPRESSION, "Filename '".$v_header['stored_filename']."' is " ."compressed by an unsupported compression " ."method (".$v_header['compression'].") "); return PclZip::errorCode(); } } // ----- Check encrypted files if (($v_extract) && (($v_header['flag'] & 1) == 1)) { $v_header['status'] = 'unsupported_encryption'; // ----- Look for PCLZIP_OPT_STOP_ON_ERROR if ( (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) { $this->privSwapBackMagicQuotes(); PclZip::privErrorLog(PCLZIP_ERR_UNSUPPORTED_ENCRYPTION, "Unsupported encryption for " ." filename '".$v_header['stored_filename'] ."'"); return PclZip::errorCode(); } } // ----- Look for real extraction if (($v_extract) && ($v_header['status'] != 'ok')) { $v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted++]); if ($v_result != 1) { $this->privCloseFd(); $this->privSwapBackMagicQuotes(); return $v_result; } $v_extract = false; } // ----- Look for real extraction if ($v_extract) { // ----- Go to the file position @rewind($this->zip_fd); if (@fseek($this->zip_fd, $v_header['offset'])) { // ----- Close the zip file $this->privCloseFd(); $this->privSwapBackMagicQuotes(); // ----- Error log PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); // ----- Return return PclZip::errorCode(); } // ----- Look for extraction as string if ($p_options[PCLZIP_OPT_EXTRACT_AS_STRING]) { $v_string = ''; // ----- Extracting the file $v_result1 = $this->privExtractFileAsString($v_header, $v_string, $p_options); if ($v_result1 < 1) { $this->privCloseFd(); $this->privSwapBackMagicQuotes(); return $v_result1; } // ----- Get the only interesting attributes if (($v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted])) != 1) { // ----- Close the zip file $this->privCloseFd(); $this->privSwapBackMagicQuotes(); return $v_result; } // ----- Set the file content $p_file_list[$v_nb_extracted]['content'] = $v_string; // ----- Next extracted file $v_nb_extracted++; // ----- Look for user callback abort if ($v_result1 == 2) { break; } } // ----- Look for extraction in standard output elseif ( (isset($p_options[PCLZIP_OPT_EXTRACT_IN_OUTPUT])) && ($p_options[PCLZIP_OPT_EXTRACT_IN_OUTPUT])) { // ----- Extracting the file in standard output $v_result1 = $this->privExtractFileInOutput($v_header, $p_options); if ($v_result1 < 1) { $this->privCloseFd(); $this->privSwapBackMagicQuotes(); return $v_result1; } // ----- Get the only interesting attributes if (($v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted++])) != 1) { $this->privCloseFd(); $this->privSwapBackMagicQuotes(); return $v_result; } // ----- Look for user callback abort if ($v_result1 == 2) { break; } } // ----- Look for normal extraction else { // ----- Extracting the file $v_result1 = $this->privExtractFile($v_header, $p_path, $p_remove_path, $p_remove_all_path, $p_options); if ($v_result1 < 1) { $this->privCloseFd(); $this->privSwapBackMagicQuotes(); return $v_result1; } // ----- Get the only interesting attributes if (($v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted++])) != 1) { // ----- Close the zip file $this->privCloseFd(); $this->privSwapBackMagicQuotes(); return $v_result; } // ----- Look for user callback abort if ($v_result1 == 2) { break; } } } } // ----- Close the zip file $this->privCloseFd(); $this->privSwapBackMagicQuotes(); // ----- Return return $v_result; } // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- // Function : privExtractFile() // Description : // Parameters : // Return Values : // // 1 : ... ? // PCLZIP_ERR_USER_ABORTED(2) : User ask for extraction stop in callback // -------------------------------------------------------------------------------- function privExtractFile(&$p_entry, $p_path, $p_remove_path, $p_remove_all_path, &$p_options) { $v_result=1; // ----- Read the file header if (($v_result = $this->privReadFileHeader($v_header)) != 1) { // ----- Return return $v_result; } // ----- Check that the file header is coherent with $p_entry info if ($this->privCheckFileHeaders($v_header, $p_entry) != 1) { // TBC } // ----- Look for all path to remove if ($p_remove_all_path == true) { // ----- Look for folder entry that not need to be extracted if (($p_entry['external']&0x00000010)==0x00000010) { $p_entry['status'] = "filtered"; return $v_result; } // ----- Get the basename of the path $p_entry['filename'] = basename($p_entry['filename']); } // ----- Look for path to remove else if ($p_remove_path != "") { if (PclZipUtilPathInclusion($p_remove_path, $p_entry['filename']) == 2) { // ----- Change the file status $p_entry['status'] = "filtered"; // ----- Return return $v_result; } $p_remove_path_size = strlen($p_remove_path); if (substr($p_entry['filename'], 0, $p_remove_path_size) == $p_remove_path) { // ----- Remove the path $p_entry['filename'] = substr($p_entry['filename'], $p_remove_path_size); } } // ----- Add the path if ($p_path != '') { $p_entry['filename'] = $p_path."/".$p_entry['filename']; } // ----- Check a base_dir_restriction if (isset($p_options[PCLZIP_OPT_EXTRACT_DIR_RESTRICTION])) { $v_inclusion = PclZipUtilPathInclusion($p_options[PCLZIP_OPT_EXTRACT_DIR_RESTRICTION], $p_entry['filename']); if ($v_inclusion == 0) { PclZip::privErrorLog(PCLZIP_ERR_DIRECTORY_RESTRICTION, "Filename '".$p_entry['filename']."' is " ."outside PCLZIP_OPT_EXTRACT_DIR_RESTRICTION"); return PclZip::errorCode(); } } // ----- Look for pre-extract callback if (isset($p_options[PCLZIP_CB_PRE_EXTRACT])) { // ----- Generate a local information $v_local_header = array(); $this->privConvertHeader2FileInfo($p_entry, $v_local_header); // ----- Call the callback // Here I do not use call_user_func() because I need to send a reference to the // header. $v_result = $p_options[PCLZIP_CB_PRE_EXTRACT](PCLZIP_CB_PRE_EXTRACT, $v_local_header); if ($v_result == 0) { // ----- Change the file status $p_entry['status'] = "skipped"; $v_result = 1; } // ----- Look for abort result if ($v_result == 2) { // ----- This status is internal and will be changed in 'skipped' $p_entry['status'] = "aborted"; $v_result = PCLZIP_ERR_USER_ABORTED; } // ----- Update the informations // Only some fields can be modified $p_entry['filename'] = $v_local_header['filename']; } // ----- Look if extraction should be done if ($p_entry['status'] == 'ok') { // ----- Look for specific actions while the file exist if (file_exists($p_entry['filename'])) { // ----- Look if file is a directory if (is_dir($p_entry['filename'])) { // ----- Change the file status $p_entry['status'] = "already_a_directory"; // ----- Look for PCLZIP_OPT_STOP_ON_ERROR // For historical reason first PclZip implementation does not stop // when this kind of error occurs. if ( (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) { PclZip::privErrorLog(PCLZIP_ERR_ALREADY_A_DIRECTORY, "Filename '".$p_entry['filename']."' is " ."already used by an existing directory"); return PclZip::errorCode(); } } // ----- Look if file is write protected else if (!is_writeable($p_entry['filename'])) { // ----- Change the file status $p_entry['status'] = "write_protected"; // ----- Look for PCLZIP_OPT_STOP_ON_ERROR // For historical reason first PclZip implementation does not stop // when this kind of error occurs. if ( (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) { PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, "Filename '".$p_entry['filename']."' exists " ."and is write protected"); return PclZip::errorCode(); } } // ----- Look if the extracted file is older else if (filemtime($p_entry['filename']) > $p_entry['mtime']) { // ----- Change the file status if ( (isset($p_options[PCLZIP_OPT_REPLACE_NEWER])) && ($p_options[PCLZIP_OPT_REPLACE_NEWER]===true)) { } else { $p_entry['status'] = "newer_exist"; // ----- Look for PCLZIP_OPT_STOP_ON_ERROR // For historical reason first PclZip implementation does not stop // when this kind of error occurs. if ( (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) { PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, "Newer version of '".$p_entry['filename']."' exists " ."and option PCLZIP_OPT_REPLACE_NEWER is not selected"); return PclZip::errorCode(); } } } else { } } // ----- Check the directory availability and create it if necessary else { if ((($p_entry['external']&0x00000010)==0x00000010) || (substr($p_entry['filename'], -1) == '/')) $v_dir_to_check = $p_entry['filename']; else if (!strstr($p_entry['filename'], "/")) $v_dir_to_check = ""; else $v_dir_to_check = dirname($p_entry['filename']); if (($v_result = $this->privDirCheck($v_dir_to_check, (($p_entry['external']&0x00000010)==0x00000010))) != 1) { // ----- Change the file status $p_entry['status'] = "path_creation_fail"; // ----- Return //return $v_result; $v_result = 1; } } } // ----- Look if extraction should be done if ($p_entry['status'] == 'ok') { // ----- Do the extraction (if not a folder) if (!(($p_entry['external']&0x00000010)==0x00000010)) { // ----- Look for not compressed file if ($p_entry['compression'] == 0) { // ----- Opening destination file if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0) { // ----- Change the file status $p_entry['status'] = "write_error"; // ----- Return return $v_result; } // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks $v_size = $p_entry['compressed_size']; while ($v_size != 0) { $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); $v_buffer = @fread($this->zip_fd, $v_read_size); /* Try to speed up the code $v_binary_data = pack('a'.$v_read_size, $v_buffer); @fwrite($v_dest_file, $v_binary_data, $v_read_size); */ @fwrite($v_dest_file, $v_buffer, $v_read_size); $v_size -= $v_read_size; } // ----- Closing the destination file fclose($v_dest_file); // ----- Change the file mtime touch($p_entry['filename'], $p_entry['mtime']); } else { // ----- TBC // Need to be finished if (($p_entry['flag'] & 1) == 1) { PclZip::privErrorLog(PCLZIP_ERR_UNSUPPORTED_ENCRYPTION, 'File \''.$p_entry['filename'].'\' is encrypted. Encrypted files are not supported.'); return PclZip::errorCode(); } // ----- Look for using temporary file to unzip if ( (!isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) && (isset($p_options[PCLZIP_OPT_TEMP_FILE_ON]) || (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]) && ($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] <= $p_entry['size'])) ) ) { $v_result = $this->privExtractFileUsingTempFile($p_entry, $p_options); if ($v_result < PCLZIP_ERR_NO_ERROR) { return $v_result; } } // ----- Look for extract in memory else { // ----- Read the compressed file in a buffer (one shot) $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']); // ----- Decompress the file $v_file_content = @gzinflate($v_buffer); unset($v_buffer); if ($v_file_content === FALSE) { // ----- Change the file status // TBC $p_entry['status'] = "error"; return $v_result; } // ----- Opening destination file if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0) { // ----- Change the file status $p_entry['status'] = "write_error"; return $v_result; } // ----- Write the uncompressed data @fwrite($v_dest_file, $v_file_content, $p_entry['size']); unset($v_file_content); // ----- Closing the destination file @fclose($v_dest_file); } // ----- Change the file mtime @touch($p_entry['filename'], $p_entry['mtime']); } // ----- Look for chmod option if (isset($p_options[PCLZIP_OPT_SET_CHMOD])) { // ----- Change the mode of the file @chmod($p_entry['filename'], $p_options[PCLZIP_OPT_SET_CHMOD]); } } } // ----- Change abort status if ($p_entry['status'] == "aborted") { $p_entry['status'] = "skipped"; } // ----- Look for post-extract callback elseif (isset($p_options[PCLZIP_CB_POST_EXTRACT])) { // ----- Generate a local information $v_local_header = array(); $this->privConvertHeader2FileInfo($p_entry, $v_local_header); // ----- Call the callback // Here I do not use call_user_func() because I need to send a reference to the // header. $v_result = $p_options[PCLZIP_CB_POST_EXTRACT](PCLZIP_CB_POST_EXTRACT, $v_local_header); // ----- Look for abort result if ($v_result == 2) { $v_result = PCLZIP_ERR_USER_ABORTED; } } // ----- Return return $v_result; } // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- // Function : privExtractFileUsingTempFile() // Description : // Parameters : // Return Values : // -------------------------------------------------------------------------------- function privExtractFileUsingTempFile(&$p_entry, &$p_options) { $v_result=1; // ----- Creates a temporary file $v_gzip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.gz'; if (($v_dest_file = @fopen($v_gzip_temp_name, "wb")) == 0) { fclose($v_file); PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary write mode'); return PclZip::errorCode(); } // ----- Write gz file format header $v_binary_data = pack('va1a1Va1a1', 0x8b1f, Chr($p_entry['compression']), Chr(0x00), time(), Chr(0x00), Chr(3)); @fwrite($v_dest_file, $v_binary_data, 10); // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks $v_size = $p_entry['compressed_size']; while ($v_size != 0) { $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); $v_buffer = @fread($this->zip_fd, $v_read_size); //$v_binary_data = pack('a'.$v_read_size, $v_buffer); @fwrite($v_dest_file, $v_buffer, $v_read_size); $v_size -= $v_read_size; } // ----- Write gz file format footer $v_binary_data = pack('VV', $p_entry['crc'], $p_entry['size']); @fwrite($v_dest_file, $v_binary_data, 8); // ----- Close the temporary file @fclose($v_dest_file); // ----- Opening destination file if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0) { $p_entry['status'] = "write_error"; return $v_result; } // ----- Open the temporary gz file if (($v_src_file = @gzopen($v_gzip_temp_name, 'rb')) == 0) { @fclose($v_dest_file); $p_entry['status'] = "read_error"; PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary read mode'); return PclZip::errorCode(); } // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks $v_size = $p_entry['size']; while ($v_size != 0) { $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); $v_buffer = @gzread($v_src_file, $v_read_size); //$v_binary_data = pack('a'.$v_read_size, $v_buffer); @fwrite($v_dest_file, $v_buffer, $v_read_size); $v_size -= $v_read_size; } @fclose($v_dest_file); @gzclose($v_src_file); // ----- Delete the temporary file @unlink($v_gzip_temp_name); // ----- Return return $v_result; } // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- // Function : privExtractFileInOutput() // Description : // Parameters : // Return Values : // -------------------------------------------------------------------------------- function privExtractFileInOutput(&$p_entry, &$p_options) { $v_result=1; // ----- Read the file header if (($v_result = $this->privReadFileHeader($v_header)) != 1) { return $v_result; } // ----- Check that the file header is coherent with $p_entry info if ($this->privCheckFileHeaders($v_header, $p_entry) != 1) { // TBC } // ----- Look for pre-extract callback if (isset($p_options[PCLZIP_CB_PRE_EXTRACT])) { // ----- Generate a local information $v_local_header = array(); $this->privConvertHeader2FileInfo($p_entry, $v_local_header); // ----- Call the callback // Here I do not use call_user_func() because I need to send a reference to the // header. // eval('$v_result = '.$p_options[PCLZIP_CB_PRE_EXTRACT].'(PCLZIP_CB_PRE_EXTRACT, $v_local_header);'); $v_result = $p_options[PCLZIP_CB_PRE_EXTRACT](PCLZIP_CB_PRE_EXTRACT, $v_local_header); if ($v_result == 0) { // ----- Change the file status $p_entry['status'] = "skipped"; $v_result = 1; } // ----- Look for abort result if ($v_result == 2) { // ----- This status is internal and will be changed in 'skipped' $p_entry['status'] = "aborted"; $v_result = PCLZIP_ERR_USER_ABORTED; } // ----- Update the informations // Only some fields can be modified $p_entry['filename'] = $v_local_header['filename']; } // ----- Trace // ----- Look if extraction should be done if ($p_entry['status'] == 'ok') { // ----- Do the extraction (if not a folder) if (!(($p_entry['external']&0x00000010)==0x00000010)) { // ----- Look for not compressed file if ($p_entry['compressed_size'] == $p_entry['size']) { // ----- Read the file in a buffer (one shot) $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']); // ----- Send the file to the output echo $v_buffer; unset($v_buffer); } else { // ----- Read the compressed file in a buffer (one shot) $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']); // ----- Decompress the file $v_file_content = gzinflate($v_buffer); unset($v_buffer); // ----- Send the file to the output echo $v_file_content; unset($v_file_content); } } } // ----- Change abort status if ($p_entry['status'] == "aborted") { $p_entry['status'] = "skipped"; } // ----- Look for post-extract callback elseif (isset($p_options[PCLZIP_CB_POST_EXTRACT])) { // ----- Generate a local information $v_local_header = array(); $this->privConvertHeader2FileInfo($p_entry, $v_local_header); // ----- Call the callback // Here I do not use call_user_func() because I need to send a reference to the // header. $v_result = $p_options[PCLZIP_CB_POST_EXTRACT](PCLZIP_CB_POST_EXTRACT, $v_local_header); // ----- Look for abort result if ($v_result == 2) { $v_result = PCLZIP_ERR_USER_ABORTED; } } return $v_result; } // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- // Function : privExtractFileAsString() // Description : // Parameters : // Return Values : // -------------------------------------------------------------------------------- function privExtractFileAsString(&$p_entry, &$p_string, &$p_options) { $v_result=1; // ----- Read the file header $v_header = array(); if (($v_result = $this->privReadFileHeader($v_header)) != 1) { // ----- Return return $v_result; } // ----- Check that the file header is coherent with $p_entry info if ($this->privCheckFileHeaders($v_header, $p_entry) != 1) { // TBC } // ----- Look for pre-extract callback if (isset($p_options[PCLZIP_CB_PRE_EXTRACT])) { // ----- Generate a local information $v_local_header = array(); $this->privConvertHeader2FileInfo($p_entry, $v_local_header); // ----- Call the callback // Here I do not use call_user_func() because I need to send a reference to the // header. $v_result = $p_options[PCLZIP_CB_PRE_EXTRACT](PCLZIP_CB_PRE_EXTRACT, $v_local_header); if ($v_result == 0) { // ----- Change the file status $p_entry['status'] = "skipped"; $v_result = 1; } // ----- Look for abort result if ($v_result == 2) { // ----- This status is internal and will be changed in 'skipped' $p_entry['status'] = "aborted"; $v_result = PCLZIP_ERR_USER_ABORTED; } // ----- Update the informations // Only some fields can be modified $p_entry['filename'] = $v_local_header['filename']; } // ----- Look if extraction should be done if ($p_entry['status'] == 'ok') { // ----- Do the extraction (if not a folder) if (!(($p_entry['external']&0x00000010)==0x00000010)) { // ----- Look for not compressed file // if ($p_entry['compressed_size'] == $p_entry['size']) if ($p_entry['compression'] == 0) { // ----- Reading the file $p_string = @fread($this->zip_fd, $p_entry['compressed_size']); } else { // ----- Reading the file $v_data = @fread($this->zip_fd, $p_entry['compressed_size']); // ----- Decompress the file if (($p_string = @gzinflate($v_data)) === FALSE) { // TBC } } // ----- Trace } else { // TBC : error : can not extract a folder in a string } } // ----- Change abort status if ($p_entry['status'] == "aborted") { $p_entry['status'] = "skipped"; } // ----- Look for post-extract callback elseif (isset($p_options[PCLZIP_CB_POST_EXTRACT])) { // ----- Generate a local information $v_local_header = array(); $this->privConvertHeader2FileInfo($p_entry, $v_local_header); // ----- Swap the content to header $v_local_header['content'] = $p_string; $p_string = ''; // ----- Call the callback // Here I do not use call_user_func() because I need to send a reference to the // header. $v_result = $p_options[PCLZIP_CB_POST_EXTRACT](PCLZIP_CB_POST_EXTRACT, $v_local_header); // ----- Swap back the content to header $p_string = $v_local_header['content']; unset($v_local_header['content']); // ----- Look for abort result if ($v_result == 2) { $v_result = PCLZIP_ERR_USER_ABORTED; } } // ----- Return return $v_result; } // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- // Function : privReadFileHeader() // Description : // Parameters : // Return Values : // -------------------------------------------------------------------------------- function privReadFileHeader(&$p_header) { $v_result=1; // ----- Read the 4 bytes signature $v_binary_data = @fread($this->zip_fd, 4); $v_data = unpack('Vid', $v_binary_data); // ----- Check signature if ($v_data['id'] != 0x04034b50) { // ----- Error log PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Invalid archive structure'); // ----- Return return PclZip::errorCode(); } // ----- Read the first 42 bytes of the header $v_binary_data = fread($this->zip_fd, 26); // ----- Look for invalid block size if (strlen($v_binary_data) != 26) { $p_header['filename'] = ""; $p_header['status'] = "invalid_header"; // ----- Error log PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Invalid block size : ".strlen($v_binary_data)); // ----- Return return PclZip::errorCode(); } // ----- Extract the values $v_data = unpack('vversion/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len', $v_binary_data); // ----- Get filename $p_header['filename'] = fread($this->zip_fd, $v_data['filename_len']); // ----- Get extra_fields if ($v_data['extra_len'] != 0) { $p_header['extra'] = fread($this->zip_fd, $v_data['extra_len']); } else { $p_header['extra'] = ''; } // ----- Extract properties $p_header['version_extracted'] = $v_data['version']; $p_header['compression'] = $v_data['compression']; $p_header['size'] = $v_data['size']; $p_header['compressed_size'] = $v_data['compressed_size']; $p_header['crc'] = $v_data['crc']; $p_header['flag'] = $v_data['flag']; $p_header['filename_len'] = $v_data['filename_len']; // ----- Recuperate date in UNIX format $p_header['mdate'] = $v_data['mdate']; $p_header['mtime'] = $v_data['mtime']; if ($p_header['mdate'] && $p_header['mtime']) { // ----- Extract time $v_hour = ($p_header['mtime'] & 0xF800) >> 11; $v_minute = ($p_header['mtime'] & 0x07E0) >> 5; $v_seconde = ($p_header['mtime'] & 0x001F)*2; // ----- Extract date $v_year = (($p_header['mdate'] & 0xFE00) >> 9) + 1980; $v_month = ($p_header['mdate'] & 0x01E0) >> 5; $v_day = $p_header['mdate'] & 0x001F; // ----- Get UNIX date format $p_header['mtime'] = @mktime($v_hour, $v_minute, $v_seconde, $v_month, $v_day, $v_year); } else { $p_header['mtime'] = time(); } // TBC //for(reset($v_data); $key = key($v_data); next($v_data)) { //} // ----- Set the stored filename $p_header['stored_filename'] = $p_header['filename']; // ----- Set the status field $p_header['status'] = "ok"; // ----- Return return $v_result; } // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- // Function : privReadCentralFileHeader() // Description : // Parameters : // Return Values : // -------------------------------------------------------------------------------- function privReadCentralFileHeader(&$p_header) { $v_result=1; // ----- Read the 4 bytes signature $v_binary_data = @fread($this->zip_fd, 4); $v_data = unpack('Vid', $v_binary_data); // ----- Check signature if ($v_data['id'] != 0x02014b50) { // ----- Error log PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Invalid archive structure'); // ----- Return return PclZip::errorCode(); } // ----- Read the first 42 bytes of the header $v_binary_data = fread($this->zip_fd, 42); // ----- Look for invalid block size if (strlen($v_binary_data) != 42) { $p_header['filename'] = ""; $p_header['status'] = "invalid_header"; // ----- Error log PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Invalid block size : ".strlen($v_binary_data)); // ----- Return return PclZip::errorCode(); } // ----- Extract the values $p_header = unpack('vversion/vversion_extracted/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len/vcomment_len/vdisk/vinternal/Vexternal/Voffset', $v_binary_data); // ----- Get filename if ($p_header['filename_len'] != 0) $p_header['filename'] = fread($this->zip_fd, $p_header['filename_len']); else $p_header['filename'] = ''; // ----- Get extra if ($p_header['extra_len'] != 0) $p_header['extra'] = fread($this->zip_fd, $p_header['extra_len']); else $p_header['extra'] = ''; // ----- Get comment if ($p_header['comment_len'] != 0) $p_header['comment'] = fread($this->zip_fd, $p_header['comment_len']); else $p_header['comment'] = ''; // ----- Extract properties // ----- Recuperate date in UNIX format //if ($p_header['mdate'] && $p_header['mtime']) // TBC : bug : this was ignoring time with 0/0/0 if (1) { // ----- Extract time $v_hour = ($p_header['mtime'] & 0xF800) >> 11; $v_minute = ($p_header['mtime'] & 0x07E0) >> 5; $v_seconde = ($p_header['mtime'] & 0x001F)*2; // ----- Extract date $v_year = (($p_header['mdate'] & 0xFE00) >> 9) + 1980; $v_month = ($p_header['mdate'] & 0x01E0) >> 5; $v_day = $p_header['mdate'] & 0x001F; // ----- Get UNIX date format $p_header['mtime'] = @mktime($v_hour, $v_minute, $v_seconde, $v_month, $v_day, $v_year); } else { $p_header['mtime'] = time(); } // ----- Set the stored filename $p_header['stored_filename'] = $p_header['filename']; // ----- Set default status to ok $p_header['status'] = 'ok'; // ----- Look if it is a directory if (substr($p_header['filename'], -1) == '/') { //$p_header['external'] = 0x41FF0010; $p_header['external'] = 0x00000010; } // ----- Return return $v_result; } // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- // Function : privCheckFileHeaders() // Description : // Parameters : // Return Values : // 1 on success, // 0 on error; // -------------------------------------------------------------------------------- function privCheckFileHeaders(&$p_local_header, &$p_central_header) { $v_result=1; // ----- Check the static values // TBC if ($p_local_header['filename'] != $p_central_header['filename']) { } if ($p_local_header['version_extracted'] != $p_central_header['version_extracted']) { } if ($p_local_header['flag'] != $p_central_header['flag']) { } if ($p_local_header['compression'] != $p_central_header['compression']) { } if ($p_local_header['mtime'] != $p_central_header['mtime']) { } if ($p_local_header['filename_len'] != $p_central_header['filename_len']) { } // ----- Look for flag bit 3 if (($p_local_header['flag'] & 8) == 8) { $p_local_header['size'] = $p_central_header['size']; $p_local_header['compressed_size'] = $p_central_header['compressed_size']; $p_local_header['crc'] = $p_central_header['crc']; } // ----- Return return $v_result; } // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- // Function : privReadEndCentralDir() // Description : // Parameters : // Return Values : // -------------------------------------------------------------------------------- function privReadEndCentralDir(&$p_central_dir) { $v_result=1; // ----- Go to the end of the zip file $v_size = filesize($this->zipname); @fseek($this->zip_fd, $v_size); if (@ftell($this->zip_fd) != $v_size) { // ----- Error log PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to go to the end of the archive \''.$this->zipname.'\''); // ----- Return return PclZip::errorCode(); } // ----- First try : look if this is an archive with no commentaries (most of the time) // in this case the end of central dir is at 22 bytes of the file end $v_found = 0; if ($v_size > 26) { @fseek($this->zip_fd, $v_size-22); if (($v_pos = @ftell($this->zip_fd)) != ($v_size-22)) { // ----- Error log PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to seek back to the middle of the archive \''.$this->zipname.'\''); // ----- Return return PclZip::errorCode(); } // ----- Read for bytes $v_binary_data = @fread($this->zip_fd, 4); $v_data = @unpack('Vid', $v_binary_data); // ----- Check signature if ($v_data['id'] == 0x06054b50) { $v_found = 1; } $v_pos = ftell($this->zip_fd); } // ----- Go back to the maximum possible size of the Central Dir End Record if (!$v_found) { $v_maximum_size = 65557; // 0xFFFF + 22; if ($v_maximum_size > $v_size) $v_maximum_size = $v_size; @fseek($this->zip_fd, $v_size-$v_maximum_size); if (@ftell($this->zip_fd) != ($v_size-$v_maximum_size)) { // ----- Error log PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to seek back to the middle of the archive \''.$this->zipname.'\''); // ----- Return return PclZip::errorCode(); } // ----- Read byte per byte in order to find the signature $v_pos = ftell($this->zip_fd); $v_bytes = 0x00000000; while ($v_pos < $v_size) { // ----- Read a byte $v_byte = @fread($this->zip_fd, 1); // ----- Add the byte //$v_bytes = ($v_bytes << 8) | Ord($v_byte); // Note we mask the old value down such that once shifted we can never end up with more than a 32bit number // Otherwise on systems where we have 64bit integers the check below for the magic number will fail. $v_bytes = ( ($v_bytes & 0xFFFFFF) << 8) | Ord($v_byte); // ----- Compare the bytes if ($v_bytes == 0x504b0506) { $v_pos++; break; } $v_pos++; } // ----- Look if not found end of central dir if ($v_pos == $v_size) { // ----- Error log PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Unable to find End of Central Dir Record signature"); // ----- Return return PclZip::errorCode(); } } // ----- Read the first 18 bytes of the header $v_binary_data = fread($this->zip_fd, 18); // ----- Look for invalid block size if (strlen($v_binary_data) != 18) { // ----- Error log PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Invalid End of Central Dir Record size : ".strlen($v_binary_data)); // ----- Return return PclZip::errorCode(); } // ----- Extract the values $v_data = unpack('vdisk/vdisk_start/vdisk_entries/ventries/Vsize/Voffset/vcomment_size', $v_binary_data); // ----- Check the global size if (($v_pos + $v_data['comment_size'] + 18) != $v_size) { // ----- Removed in release 2.2 see readme file // The check of the file size is a little too strict. // Some bugs where found when a zip is encrypted/decrypted with 'crypt'. // While decrypted, zip has training 0 bytes if (0) { // ----- Error log PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'The central dir is not at the end of the archive.' .' Some trailing bytes exists after the archive.'); // ----- Return return PclZip::errorCode(); } } // ----- Get comment if ($v_data['comment_size'] != 0) { $p_central_dir['comment'] = fread($this->zip_fd, $v_data['comment_size']); } else $p_central_dir['comment'] = ''; $p_central_dir['entries'] = $v_data['entries']; $p_central_dir['disk_entries'] = $v_data['disk_entries']; $p_central_dir['offset'] = $v_data['offset']; $p_central_dir['size'] = $v_data['size']; $p_central_dir['disk'] = $v_data['disk']; $p_central_dir['disk_start'] = $v_data['disk_start']; // TBC //for(reset($p_central_dir); $key = key($p_central_dir); next($p_central_dir)) { //} // ----- Return return $v_result; } // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- // Function : privDeleteByRule() // Description : // Parameters : // Return Values : // -------------------------------------------------------------------------------- function privDeleteByRule(&$p_result_list, &$p_options) { $v_result=1; $v_list_detail = array(); // ----- Open the zip file if (($v_result=$this->privOpenFd('rb')) != 1) { // ----- Return return $v_result; } // ----- Read the central directory informations $v_central_dir = array(); if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) { $this->privCloseFd(); return $v_result; } // ----- Go to beginning of File @rewind($this->zip_fd); // ----- Scan all the files // ----- Start at beginning of Central Dir $v_pos_entry = $v_central_dir['offset']; @rewind($this->zip_fd); if (@fseek($this->zip_fd, $v_pos_entry)) { // ----- Close the zip file $this->privCloseFd(); // ----- Error log PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); // ----- Return return PclZip::errorCode(); } // ----- Read each entry $v_header_list = array(); $j_start = 0; for ($i=0, $v_nb_extracted=0; $i<$v_central_dir['entries']; $i++) { // ----- Read the file header $v_header_list[$v_nb_extracted] = array(); if (($v_result = $this->privReadCentralFileHeader($v_header_list[$v_nb_extracted])) != 1) { // ----- Close the zip file $this->privCloseFd(); return $v_result; } // ----- Store the index $v_header_list[$v_nb_extracted]['index'] = $i; // ----- Look for the specific extract rules $v_found = false; // ----- Look for extract by name rule if ( (isset($p_options[PCLZIP_OPT_BY_NAME])) && ($p_options[PCLZIP_OPT_BY_NAME] != 0)) { // ----- Look if the filename is in the list for ($j=0; ($j strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) && (substr($v_header_list[$v_nb_extracted]['stored_filename'], 0, strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) == $p_options[PCLZIP_OPT_BY_NAME][$j])) { $v_found = true; } elseif ( (($v_header_list[$v_nb_extracted]['external']&0x00000010)==0x00000010) /* Indicates a folder */ && ($v_header_list[$v_nb_extracted]['stored_filename'].'/' == $p_options[PCLZIP_OPT_BY_NAME][$j])) { $v_found = true; } } // ----- Look for a filename elseif ($v_header_list[$v_nb_extracted]['stored_filename'] == $p_options[PCLZIP_OPT_BY_NAME][$j]) { $v_found = true; } } } // ----- Look for extract by ereg rule // ereg() is deprecated with PHP 5.3 /* else if ( (isset($p_options[PCLZIP_OPT_BY_EREG])) && ($p_options[PCLZIP_OPT_BY_EREG] != "")) { if (ereg($p_options[PCLZIP_OPT_BY_EREG], $v_header_list[$v_nb_extracted]['stored_filename'])) { $v_found = true; } } */ // ----- Look for extract by preg rule else if ( (isset($p_options[PCLZIP_OPT_BY_PREG])) && ($p_options[PCLZIP_OPT_BY_PREG] != "")) { if (preg_match($p_options[PCLZIP_OPT_BY_PREG], $v_header_list[$v_nb_extracted]['stored_filename'])) { $v_found = true; } } // ----- Look for extract by index rule else if ( (isset($p_options[PCLZIP_OPT_BY_INDEX])) && ($p_options[PCLZIP_OPT_BY_INDEX] != 0)) { // ----- Look if the index is in the list for ($j=$j_start; ($j=$p_options[PCLZIP_OPT_BY_INDEX][$j]['start']) && ($i<=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end'])) { $v_found = true; } if ($i>=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end']) { $j_start = $j+1; } if ($p_options[PCLZIP_OPT_BY_INDEX][$j]['start']>$i) { break; } } } else { $v_found = true; } // ----- Look for deletion if ($v_found) { unset($v_header_list[$v_nb_extracted]); } else { $v_nb_extracted++; } } // ----- Look if something need to be deleted if ($v_nb_extracted > 0) { // ----- Creates a temporay file $v_zip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.tmp'; // ----- Creates a temporary zip archive $v_temp_zip = new PclZip($v_zip_temp_name); // ----- Open the temporary zip file in write mode if (($v_result = $v_temp_zip->privOpenFd('wb')) != 1) { $this->privCloseFd(); // ----- Return return $v_result; } // ----- Look which file need to be kept for ($i=0; $izip_fd); if (@fseek($this->zip_fd, $v_header_list[$i]['offset'])) { // ----- Close the zip file $this->privCloseFd(); $v_temp_zip->privCloseFd(); @unlink($v_zip_temp_name); // ----- Error log PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); // ----- Return return PclZip::errorCode(); } // ----- Read the file header $v_local_header = array(); if (($v_result = $this->privReadFileHeader($v_local_header)) != 1) { // ----- Close the zip file $this->privCloseFd(); $v_temp_zip->privCloseFd(); @unlink($v_zip_temp_name); // ----- Return return $v_result; } // ----- Check that local file header is same as central file header if ($this->privCheckFileHeaders($v_local_header, $v_header_list[$i]) != 1) { // TBC } unset($v_local_header); // ----- Write the file header if (($v_result = $v_temp_zip->privWriteFileHeader($v_header_list[$i])) != 1) { // ----- Close the zip file $this->privCloseFd(); $v_temp_zip->privCloseFd(); @unlink($v_zip_temp_name); // ----- Return return $v_result; } // ----- Read/write the data block if (($v_result = PclZipUtilCopyBlock($this->zip_fd, $v_temp_zip->zip_fd, $v_header_list[$i]['compressed_size'])) != 1) { // ----- Close the zip file $this->privCloseFd(); $v_temp_zip->privCloseFd(); @unlink($v_zip_temp_name); // ----- Return return $v_result; } } // ----- Store the offset of the central dir $v_offset = @ftell($v_temp_zip->zip_fd); // ----- Re-Create the Central Dir files header for ($i=0; $iprivWriteCentralFileHeader($v_header_list[$i])) != 1) { $v_temp_zip->privCloseFd(); $this->privCloseFd(); @unlink($v_zip_temp_name); // ----- Return return $v_result; } // ----- Transform the header to a 'usable' info $v_temp_zip->privConvertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]); } // ----- Zip file comment $v_comment = ''; if (isset($p_options[PCLZIP_OPT_COMMENT])) { $v_comment = $p_options[PCLZIP_OPT_COMMENT]; } // ----- Calculate the size of the central header $v_size = @ftell($v_temp_zip->zip_fd)-$v_offset; // ----- Create the central dir footer if (($v_result = $v_temp_zip->privWriteCentralHeader(sizeof($v_header_list), $v_size, $v_offset, $v_comment)) != 1) { // ----- Reset the file list unset($v_header_list); $v_temp_zip->privCloseFd(); $this->privCloseFd(); @unlink($v_zip_temp_name); // ----- Return return $v_result; } // ----- Close $v_temp_zip->privCloseFd(); $this->privCloseFd(); // ----- Delete the zip file // TBC : I should test the result ... @unlink($this->zipname); // ----- Rename the temporary file // TBC : I should test the result ... //@rename($v_zip_temp_name, $this->zipname); PclZipUtilRename($v_zip_temp_name, $this->zipname); // ----- Destroy the temporary archive unset($v_temp_zip); } // ----- Remove every files : reset the file else if ($v_central_dir['entries'] != 0) { $this->privCloseFd(); if (($v_result = $this->privOpenFd('wb')) != 1) { return $v_result; } if (($v_result = $this->privWriteCentralHeader(0, 0, 0, '')) != 1) { return $v_result; } $this->privCloseFd(); } // ----- Return return $v_result; } // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- // Function : privDirCheck() // Description : // Check if a directory exists, if not it creates it and all the parents directory // which may be useful. // Parameters : // $p_dir : Directory path to check. // Return Values : // 1 : OK // -1 : Unable to create directory // -------------------------------------------------------------------------------- function privDirCheck($p_dir, $p_is_dir=false) { $v_result = 1; // ----- Remove the final '/' if (($p_is_dir) && (substr($p_dir, -1)=='/')) { $p_dir = substr($p_dir, 0, strlen($p_dir)-1); } // ----- Check the directory availability if ((is_dir($p_dir)) || ($p_dir == "")) { return 1; } // ----- Extract parent directory $p_parent_dir = dirname($p_dir); // ----- Just a check if ($p_parent_dir != $p_dir) { // ----- Look for parent directory if ($p_parent_dir != "") { if (($v_result = $this->privDirCheck($p_parent_dir)) != 1) { return $v_result; } } } // ----- Create the directory if (!@mkdir($p_dir, 0777)) { // ----- Error log PclZip::privErrorLog(PCLZIP_ERR_DIR_CREATE_FAIL, "Unable to create directory '$p_dir'"); // ----- Return return PclZip::errorCode(); } // ----- Return return $v_result; } // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- // Function : privMerge() // Description : // If $p_archive_to_add does not exist, the function exit with a success result. // Parameters : // Return Values : // -------------------------------------------------------------------------------- function privMerge(&$p_archive_to_add) { $v_result=1; // ----- Look if the archive_to_add exists if (!is_file($p_archive_to_add->zipname)) { // ----- Nothing to merge, so merge is a success $v_result = 1; // ----- Return return $v_result; } // ----- Look if the archive exists if (!is_file($this->zipname)) { // ----- Do a duplicate $v_result = $this->privDuplicate($p_archive_to_add->zipname); // ----- Return return $v_result; } // ----- Open the zip file if (($v_result=$this->privOpenFd('rb')) != 1) { // ----- Return return $v_result; } // ----- Read the central directory informations $v_central_dir = array(); if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) { $this->privCloseFd(); return $v_result; } // ----- Go to beginning of File @rewind($this->zip_fd); // ----- Open the archive_to_add file if (($v_result=$p_archive_to_add->privOpenFd('rb')) != 1) { $this->privCloseFd(); // ----- Return return $v_result; } // ----- Read the central directory informations $v_central_dir_to_add = array(); if (($v_result = $p_archive_to_add->privReadEndCentralDir($v_central_dir_to_add)) != 1) { $this->privCloseFd(); $p_archive_to_add->privCloseFd(); return $v_result; } // ----- Go to beginning of File @rewind($p_archive_to_add->zip_fd); // ----- Creates a temporay file $v_zip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.tmp'; // ----- Open the temporary file in write mode if (($v_zip_temp_fd = @fopen($v_zip_temp_name, 'wb')) == 0) { $this->privCloseFd(); $p_archive_to_add->privCloseFd(); PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_zip_temp_name.'\' in binary write mode'); // ----- Return return PclZip::errorCode(); } // ----- Copy the files from the archive to the temporary file // TBC : Here I should better append the file and go back to erase the central dir $v_size = $v_central_dir['offset']; while ($v_size != 0) { $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); $v_buffer = fread($this->zip_fd, $v_read_size); @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); $v_size -= $v_read_size; } // ----- Copy the files from the archive_to_add into the temporary file $v_size = $v_central_dir_to_add['offset']; while ($v_size != 0) { $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); $v_buffer = fread($p_archive_to_add->zip_fd, $v_read_size); @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); $v_size -= $v_read_size; } // ----- Store the offset of the central dir $v_offset = @ftell($v_zip_temp_fd); // ----- Copy the block of file headers from the old archive $v_size = $v_central_dir['size']; while ($v_size != 0) { $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); $v_buffer = @fread($this->zip_fd, $v_read_size); @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); $v_size -= $v_read_size; } // ----- Copy the block of file headers from the archive_to_add $v_size = $v_central_dir_to_add['size']; while ($v_size != 0) { $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); $v_buffer = @fread($p_archive_to_add->zip_fd, $v_read_size); @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); $v_size -= $v_read_size; } // ----- Merge the file comments $v_comment = $v_central_dir['comment'].' '.$v_central_dir_to_add['comment']; // ----- Calculate the size of the (new) central header $v_size = @ftell($v_zip_temp_fd)-$v_offset; // ----- Swap the file descriptor // Here is a trick : I swap the temporary fd with the zip fd, in order to use // the following methods on the temporary fil and not the real archive fd $v_swap = $this->zip_fd; $this->zip_fd = $v_zip_temp_fd; $v_zip_temp_fd = $v_swap; // ----- Create the central dir footer if (($v_result = $this->privWriteCentralHeader($v_central_dir['entries']+$v_central_dir_to_add['entries'], $v_size, $v_offset, $v_comment)) != 1) { $this->privCloseFd(); $p_archive_to_add->privCloseFd(); @fclose($v_zip_temp_fd); $this->zip_fd = null; // ----- Reset the file list unset($v_header_list); // ----- Return return $v_result; } // ----- Swap back the file descriptor $v_swap = $this->zip_fd; $this->zip_fd = $v_zip_temp_fd; $v_zip_temp_fd = $v_swap; // ----- Close $this->privCloseFd(); $p_archive_to_add->privCloseFd(); // ----- Close the temporary file @fclose($v_zip_temp_fd); // ----- Delete the zip file // TBC : I should test the result ... @unlink($this->zipname); // ----- Rename the temporary file // TBC : I should test the result ... //@rename($v_zip_temp_name, $this->zipname); PclZipUtilRename($v_zip_temp_name, $this->zipname); // ----- Return return $v_result; } // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- // Function : privDuplicate() // Description : // Parameters : // Return Values : // -------------------------------------------------------------------------------- function privDuplicate($p_archive_filename) { $v_result=1; // ----- Look if the $p_archive_filename exists if (!is_file($p_archive_filename)) { // ----- Nothing to duplicate, so duplicate is a success. $v_result = 1; // ----- Return return $v_result; } // ----- Open the zip file if (($v_result=$this->privOpenFd('wb')) != 1) { // ----- Return return $v_result; } // ----- Open the temporary file in write mode if (($v_zip_temp_fd = @fopen($p_archive_filename, 'rb')) == 0) { $this->privCloseFd(); PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive file \''.$p_archive_filename.'\' in binary write mode'); // ----- Return return PclZip::errorCode(); } // ----- Copy the files from the archive to the temporary file // TBC : Here I should better append the file and go back to erase the central dir $v_size = filesize($p_archive_filename); while ($v_size != 0) { $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); $v_buffer = fread($v_zip_temp_fd, $v_read_size); @fwrite($this->zip_fd, $v_buffer, $v_read_size); $v_size -= $v_read_size; } // ----- Close $this->privCloseFd(); // ----- Close the temporary file @fclose($v_zip_temp_fd); // ----- Return return $v_result; } // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- // Function : privErrorLog() // Description : // Parameters : // -------------------------------------------------------------------------------- function privErrorLog($p_error_code=0, $p_error_string='') { if (PCLZIP_ERROR_EXTERNAL == 1) { PclError($p_error_code, $p_error_string); } else { $this->error_code = $p_error_code; $this->error_string = $p_error_string; } } // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- // Function : privErrorReset() // Description : // Parameters : // -------------------------------------------------------------------------------- function privErrorReset() { if (PCLZIP_ERROR_EXTERNAL == 1) { PclErrorReset(); } else { $this->error_code = 0; $this->error_string = ''; } } // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- // Function : privDisableMagicQuotes() // Description : // Parameters : // Return Values : // -------------------------------------------------------------------------------- function privDisableMagicQuotes() { $v_result=1; // ----- Look if function exists if ( (!function_exists("get_magic_quotes_runtime")) || (!function_exists("set_magic_quotes_runtime"))) { return $v_result; } // ----- Look if already done if ($this->magic_quotes_status != -1) { return $v_result; } // ----- Get and memorize the magic_quote value $this->magic_quotes_status = @get_magic_quotes_runtime(); // ----- Disable magic_quotes if ($this->magic_quotes_status == 1) { @set_magic_quotes_runtime(0); } // ----- Return return $v_result; } // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- // Function : privSwapBackMagicQuotes() // Description : // Parameters : // Return Values : // -------------------------------------------------------------------------------- function privSwapBackMagicQuotes() { $v_result=1; // ----- Look if function exists if ( (!function_exists("get_magic_quotes_runtime")) || (!function_exists("set_magic_quotes_runtime"))) { return $v_result; } // ----- Look if something to do if ($this->magic_quotes_status != -1) { return $v_result; } // ----- Swap back magic_quotes if ($this->magic_quotes_status == 1) { @set_magic_quotes_runtime($this->magic_quotes_status); } // ----- Return return $v_result; } // -------------------------------------------------------------------------------- } // End of class // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- // Function : PclZipUtilPathReduction() // Description : // Parameters : // Return Values : // -------------------------------------------------------------------------------- function PclZipUtilPathReduction($p_dir) { $v_result = ""; // ----- Look for not empty path if ($p_dir != "") { // ----- Explode path by directory names $v_list = explode("/", $p_dir); // ----- Study directories from last to first $v_skip = 0; for ($i=sizeof($v_list)-1; $i>=0; $i--) { // ----- Look for current path if ($v_list[$i] == ".") { // ----- Ignore this directory // Should be the first $i=0, but no check is done } else if ($v_list[$i] == "..") { $v_skip++; } else if ($v_list[$i] == "") { // ----- First '/' i.e. root slash if ($i == 0) { $v_result = "/".$v_result; if ($v_skip > 0) { // ----- It is an invalid path, so the path is not modified // TBC $v_result = $p_dir; $v_skip = 0; } } // ----- Last '/' i.e. indicates a directory else if ($i == (sizeof($v_list)-1)) { $v_result = $v_list[$i]; } // ----- Double '/' inside the path else { // ----- Ignore only the double '//' in path, // but not the first and last '/' } } else { // ----- Look for item to skip if ($v_skip > 0) { $v_skip--; } else { $v_result = $v_list[$i].($i!=(sizeof($v_list)-1)?"/".$v_result:""); } } } // ----- Look for skip if ($v_skip > 0) { while ($v_skip > 0) { $v_result = '../'.$v_result; $v_skip--; } } } // ----- Return return $v_result; } // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- // Function : PclZipUtilPathInclusion() // Description : // This function indicates if the path $p_path is under the $p_dir tree. Or, // said in an other way, if the file or sub-dir $p_path is inside the dir // $p_dir. // The function indicates also if the path is exactly the same as the dir. // This function supports path with duplicated '/' like '//', but does not // support '.' or '..' statements. // Parameters : // Return Values : // 0 if $p_path is not inside directory $p_dir // 1 if $p_path is inside directory $p_dir // 2 if $p_path is exactly the same as $p_dir // -------------------------------------------------------------------------------- function PclZipUtilPathInclusion($p_dir, $p_path) { $v_result = 1; // ----- Look for path beginning by ./ if ( ($p_dir == '.') || ((strlen($p_dir) >=2) && (substr($p_dir, 0, 2) == './'))) { $p_dir = PclZipUtilTranslateWinPath(getcwd(), FALSE).'/'.substr($p_dir, 1); } if ( ($p_path == '.') || ((strlen($p_path) >=2) && (substr($p_path, 0, 2) == './'))) { $p_path = PclZipUtilTranslateWinPath(getcwd(), FALSE).'/'.substr($p_path, 1); } // ----- Explode dir and path by directory separator $v_list_dir = explode("/", $p_dir); $v_list_dir_size = sizeof($v_list_dir); $v_list_path = explode("/", $p_path); $v_list_path_size = sizeof($v_list_path); // ----- Study directories paths $i = 0; $j = 0; while (($i < $v_list_dir_size) && ($j < $v_list_path_size) && ($v_result)) { // ----- Look for empty dir (path reduction) if ($v_list_dir[$i] == '') { $i++; continue; } if ($v_list_path[$j] == '') { $j++; continue; } // ----- Compare the items if (($v_list_dir[$i] != $v_list_path[$j]) && ($v_list_dir[$i] != '') && ( $v_list_path[$j] != '')) { $v_result = 0; } // ----- Next items $i++; $j++; } // ----- Look if everything seems to be the same if ($v_result) { // ----- Skip all the empty items while (($j < $v_list_path_size) && ($v_list_path[$j] == '')) $j++; while (($i < $v_list_dir_size) && ($v_list_dir[$i] == '')) $i++; if (($i >= $v_list_dir_size) && ($j >= $v_list_path_size)) { // ----- There are exactly the same $v_result = 2; } else if ($i < $v_list_dir_size) { // ----- The path is shorter than the dir $v_result = 0; } } // ----- Return return $v_result; } // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- // Function : PclZipUtilCopyBlock() // Description : // Parameters : // $p_mode : read/write compression mode // 0 : src & dest normal // 1 : src gzip, dest normal // 2 : src normal, dest gzip // 3 : src & dest gzip // Return Values : // -------------------------------------------------------------------------------- function PclZipUtilCopyBlock($p_src, $p_dest, $p_size, $p_mode=0) { $v_result = 1; if ($p_mode==0) { while ($p_size != 0) { $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE); $v_buffer = @fread($p_src, $v_read_size); @fwrite($p_dest, $v_buffer, $v_read_size); $p_size -= $v_read_size; } } else if ($p_mode==1) { while ($p_size != 0) { $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE); $v_buffer = @gzread($p_src, $v_read_size); @fwrite($p_dest, $v_buffer, $v_read_size); $p_size -= $v_read_size; } } else if ($p_mode==2) { while ($p_size != 0) { $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE); $v_buffer = @fread($p_src, $v_read_size); @gzwrite($p_dest, $v_buffer, $v_read_size); $p_size -= $v_read_size; } } else if ($p_mode==3) { while ($p_size != 0) { $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE); $v_buffer = @gzread($p_src, $v_read_size); @gzwrite($p_dest, $v_buffer, $v_read_size); $p_size -= $v_read_size; } } // ----- Return return $v_result; } // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- // Function : PclZipUtilRename() // Description : // This function tries to do a simple rename() function. If it fails, it // tries to copy the $p_src file in a new $p_dest file and then unlink the // first one. // Parameters : // $p_src : Old filename // $p_dest : New filename // Return Values : // 1 on success, 0 on failure. // -------------------------------------------------------------------------------- function PclZipUtilRename($p_src, $p_dest) { $v_result = 1; // ----- Try to rename the files if (!@rename($p_src, $p_dest)) { // ----- Try to copy & unlink the src if (!@copy($p_src, $p_dest)) { $v_result = 0; } else if (!@unlink($p_src)) { $v_result = 0; } } // ----- Return return $v_result; } // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- // Function : PclZipUtilOptionText() // Description : // Translate option value in text. Mainly for debug purpose. // Parameters : // $p_option : the option value. // Return Values : // The option text value. // -------------------------------------------------------------------------------- function PclZipUtilOptionText($p_option) { $v_list = get_defined_constants(); for (reset($v_list); $v_key = key($v_list); next($v_list)) { $v_prefix = substr($v_key, 0, 10); if (( ($v_prefix == 'PCLZIP_OPT') || ($v_prefix == 'PCLZIP_CB_') || ($v_prefix == 'PCLZIP_ATT')) && ($v_list[$v_key] == $p_option)) { return $v_key; } } $v_result = 'Unknown'; return $v_result; } // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- // Function : PclZipUtilTranslateWinPath() // Description : // Translate windows path by replacing '\' by '/' and optionally removing // drive letter. // Parameters : // $p_path : path to translate. // $p_remove_disk_letter : true | false // Return Values : // The path translated. // -------------------------------------------------------------------------------- function PclZipUtilTranslateWinPath($p_path, $p_remove_disk_letter=true) { if (stristr(php_uname(), 'windows')) { // ----- Look for potential disk letter if (($p_remove_disk_letter) && (($v_position = strpos($p_path, ':')) != false)) { $p_path = substr($p_path, $v_position+1); } // ----- Change potential windows directory separator if ((strpos($p_path, '\\') > 0) || (substr($p_path, 0,1) == '\\')) { $p_path = strtr($p_path, '\\', '/'); } } return $p_path; } // -------------------------------------------------------------------------------- ?> wp-admin/includes/class-wp-comments-list-table.php0000644002347300047320000004711311656660342022070 0ustar vonfabpsacln 'comments', 'singular' => 'comment', 'ajax' => true, ) ); } function ajax_user_can() { return current_user_can('edit_posts'); } function prepare_items() { global $post_id, $comment_status, $search, $comment_type; $comment_status = isset( $_REQUEST['comment_status'] ) ? $_REQUEST['comment_status'] : 'all'; if ( !in_array( $comment_status, array( 'all', 'moderated', 'approved', 'spam', 'trash' ) ) ) $comment_status = 'all'; $comment_type = !empty( $_REQUEST['comment_type'] ) ? $_REQUEST['comment_type'] : ''; $search = ( isset( $_REQUEST['s'] ) ) ? $_REQUEST['s'] : ''; $user_id = ( isset( $_REQUEST['user_id'] ) ) ? $_REQUEST['user_id'] : ''; $orderby = ( isset( $_REQUEST['orderby'] ) ) ? $_REQUEST['orderby'] : ''; $order = ( isset( $_REQUEST['order'] ) ) ? $_REQUEST['order'] : ''; $comments_per_page = $this->get_per_page( $comment_status ); $doing_ajax = defined( 'DOING_AJAX' ) && DOING_AJAX; if ( isset( $_REQUEST['number'] ) ) { $number = (int) $_REQUEST['number']; } else { $number = $comments_per_page + min( 8, $comments_per_page ); // Grab a few extra } $page = $this->get_pagenum(); if ( isset( $_REQUEST['start'] ) ) { $start = $_REQUEST['start']; } else { $start = ( $page - 1 ) * $comments_per_page; } if ( $doing_ajax && isset( $_REQUEST['offset'] ) ) { $start += $_REQUEST['offset']; } $status_map = array( 'moderated' => 'hold', 'approved' => 'approve' ); $args = array( 'status' => isset( $status_map[$comment_status] ) ? $status_map[$comment_status] : $comment_status, 'search' => $search, 'user_id' => $user_id, 'offset' => $start, 'number' => $number, 'post_id' => $post_id, 'type' => $comment_type, 'orderby' => $orderby, 'order' => $order, ); $_comments = get_comments( $args ); update_comment_cache( $_comments ); $this->items = array_slice( $_comments, 0, $comments_per_page ); $this->extra_items = array_slice( $_comments, $comments_per_page ); $total_comments = get_comments( array_merge( $args, array('count' => true, 'offset' => 0, 'number' => 0) ) ); $_comment_post_ids = array(); foreach ( $_comments as $_c ) { $_comment_post_ids[] = $_c->comment_post_ID; } $this->pending_count = get_pending_comments_num( $_comment_post_ids ); $this->set_pagination_args( array( 'total_items' => $total_comments, 'per_page' => $comments_per_page, ) ); } function get_per_page( $comment_status = 'all' ) { $comments_per_page = $this->get_items_per_page( 'edit_comments_per_page' ); $comments_per_page = apply_filters( 'comments_per_page', $comments_per_page, $comment_status ); return $comments_per_page; } function no_items() { global $comment_status; if ( 'moderated' == $comment_status ) _e( 'No comments awaiting moderation… yet.' ); else _e( 'No comments found.' ); } function get_views() { global $post_id, $comment_status; $status_links = array(); $num_comments = ( $post_id ) ? wp_count_comments( $post_id ) : wp_count_comments(); //, number_format_i18n($num_comments->moderated) ), "" . number_format_i18n($num_comments->moderated) . ""), //, number_format_i18n($num_comments->spam) ), "" . number_format_i18n($num_comments->spam) . "") $stati = array( 'all' => _nx_noop('All', 'All', 'comments'), // singular not used 'moderated' => _n_noop('Pending (%s)', 'Pending (%s)'), 'approved' => _n_noop('Approved', 'Approved'), // singular not used 'spam' => _n_noop('Spam (%s)', 'Spam (%s)'), 'trash' => _n_noop('Trash (%s)', 'Trash (%s)') ); if ( !EMPTY_TRASH_DAYS ) unset($stati['trash']); $link = 'edit-comments.php'; if ( !empty($comment_type) && 'all' != $comment_type ) $link = add_query_arg( 'comment_type', $comment_type, $link ); foreach ( $stati as $status => $label ) { $class = ( $status == $comment_status ) ? ' class="current"' : ''; if ( !isset( $num_comments->$status ) ) $num_comments->$status = 10; $link = add_query_arg( 'comment_status', $status, $link ); if ( $post_id ) $link = add_query_arg( 'p', absint( $post_id ), $link ); /* // I toyed with this, but decided against it. Leaving it in here in case anyone thinks it is a good idea. ~ Mark if ( !empty( $_REQUEST['s'] ) ) $link = add_query_arg( 's', esc_attr( stripslashes( $_REQUEST['s'] ) ), $link ); */ $status_links[$status] = "" . sprintf( translate_nooped_plural( $label, $num_comments->$status ), number_format_i18n( $num_comments->$status ) ) . ''; } $status_links = apply_filters( 'comment_status_links', $status_links ); return $status_links; } function get_bulk_actions() { global $comment_status; $actions = array(); if ( in_array( $comment_status, array( 'all', 'approved' ) ) ) $actions['unapprove'] = __( 'Unapprove' ); if ( in_array( $comment_status, array( 'all', 'moderated', 'spam' ) ) ) $actions['approve'] = __( 'Approve' ); if ( in_array( $comment_status, array( 'all', 'moderated', 'approved' ) ) ) $actions['spam'] = _x( 'Mark as Spam', 'comment' ); if ( 'trash' == $comment_status ) $actions['untrash'] = __( 'Restore' ); elseif ( 'spam' == $comment_status ) $actions['unspam'] = _x( 'Not Spam', 'comment' ); if ( in_array( $comment_status, array( 'trash', 'spam' ) ) || !EMPTY_TRASH_DAYS ) $actions['delete'] = __( 'Delete Permanently' ); else $actions['trash'] = __( 'Move to Trash' ); return $actions; } function extra_tablenav( $which ) { global $comment_status, $comment_type; ?>
'post-query-submit' ) ); } if ( ( 'spam' == $comment_status || 'trash' == $comment_status ) && current_user_can( 'moderate_comments' ) ) { wp_nonce_field( 'bulk-destroy', '_destroy_nonce' ); $title = ( 'spam' == $comment_status ) ? esc_attr__( 'Empty Spam' ) : esc_attr__( 'Empty Trash' ); submit_button( $title, 'button-secondary apply', 'delete_all', false ); } do_action( 'manage_comments_nav', $comment_status ); echo '
'; } function current_action() { if ( isset( $_REQUEST['delete_all'] ) || isset( $_REQUEST['delete_all2'] ) ) return 'delete_all'; return parent::current_action(); } function get_columns() { global $post_id; $columns = array(); if ( $this->checkbox ) $columns['cb'] = ''; $columns['author'] = __( 'Author' ); $columns['comment'] = _x( 'Comment', 'column name' ); if ( !$post_id ) $columns['response'] = _x( 'In Response To', 'column name' ); return $columns; } function get_sortable_columns() { return array( 'author' => 'comment_author', 'response' => 'comment_post_ID' ); } function display() { extract( $this->_args ); wp_nonce_field( "fetch-list-" . get_class( $this ), '_ajax_fetch_list_nonce' ); $this->display_tablenav( 'top' ); ?> print_column_headers(); ?> print_column_headers( false ); ?> display_rows_or_placeholder(); ?> items = $this->extra_items; $this->display_rows(); ?>
display_tablenav( 'bottom' ); } function single_row( $a_comment ) { global $post, $comment, $the_comment_status; $comment = $a_comment; $the_comment_status = wp_get_comment_status( $comment->comment_ID ); $post = get_post( $comment->comment_post_ID ); $this->user_can = current_user_can( 'edit_comment', $comment->comment_ID ); echo ""; echo $this->single_row_columns( $comment ); echo ""; } function column_cb( $comment ) { if ( $this->user_can ) echo ""; } function column_comment( $comment ) { global $post, $comment_status, $the_comment_status; $user_can = $this->user_can; $comment_url = esc_url( get_comment_link( $comment->comment_ID ) ); $ptime = date( 'G', strtotime( $comment->comment_date ) ); if ( ( abs( time() - $ptime ) ) < 86400 ) $ptime = sprintf( __( '%s ago' ), human_time_diff( $ptime ) ); else $ptime = mysql2date( __( 'Y/m/d \a\t g:i A' ), $comment->comment_date ); if ( $user_can ) { $del_nonce = esc_html( '_wpnonce=' . wp_create_nonce( "delete-comment_$comment->comment_ID" ) ); $approve_nonce = esc_html( '_wpnonce=' . wp_create_nonce( "approve-comment_$comment->comment_ID" ) ); $url = "comment.php?c=$comment->comment_ID"; $approve_url = esc_url( $url . "&action=approvecomment&$approve_nonce" ); $unapprove_url = esc_url( $url . "&action=unapprovecomment&$approve_nonce" ); $spam_url = esc_url( $url . "&action=spamcomment&$del_nonce" ); $unspam_url = esc_url( $url . "&action=unspamcomment&$del_nonce" ); $trash_url = esc_url( $url . "&action=trashcomment&$del_nonce" ); $untrash_url = esc_url( $url . "&action=untrashcomment&$del_nonce" ); $delete_url = esc_url( $url . "&action=deletecomment&$del_nonce" ); } echo ''; comment_text(); if ( $user_can ) { ?> '', 'unapprove' => '', 'reply' => '', 'quickedit' => '', 'edit' => '', 'spam' => '', 'unspam' => '', 'trash' => '', 'untrash' => '', 'delete' => '' ); if ( $comment_status && 'all' != $comment_status ) { // not looking at all comments if ( 'approved' == $the_comment_status ) $actions['unapprove'] = "" . __( 'Unapprove' ) . ''; else if ( 'unapproved' == $the_comment_status ) $actions['approve'] = "" . __( 'Approve' ) . ''; } else { $actions['approve'] = "" . __( 'Approve' ) . ''; $actions['unapprove'] = "" . __( 'Unapprove' ) . ''; } if ( 'spam' != $the_comment_status && 'trash' != $the_comment_status ) { $actions['spam'] = "" . /* translators: mark as spam link */ _x( 'Spam', 'verb' ) . ''; } elseif ( 'spam' == $the_comment_status ) { $actions['unspam'] = "" . _x( 'Not Spam', 'comment' ) . ''; } elseif ( 'trash' == $the_comment_status ) { $actions['untrash'] = "" . __( 'Restore' ) . ''; } if ( 'spam' == $the_comment_status || 'trash' == $the_comment_status || !EMPTY_TRASH_DAYS ) { $actions['delete'] = "" . __( 'Delete Permanently' ) . ''; } else { $actions['trash'] = "" . _x( 'Trash', 'verb' ) . ''; } if ( 'trash' != $the_comment_status ) { $actions['edit'] = "". __( 'Edit' ) . ''; $actions['quickedit'] = '' . __( 'Quick Edit' ) . ''; if ( 'spam' != $the_comment_status ) $actions['reply'] = '' . __( 'Reply' ) . ''; } $actions = apply_filters( 'comment_row_actions', array_filter( $actions ), $comment ); $i = 0; echo '
'; foreach ( $actions as $action => $link ) { ++$i; ( ( ( 'approve' == $action || 'unapprove' == $action ) && 2 === $i ) || 1 === $i ) ? $sep = '' : $sep = ' | '; // Reply and quickedit need a hide-if-no-js span when not added with ajax if ( ( 'reply' == $action || 'quickedit' == $action ) && ! defined('DOING_AJAX') ) $action .= ' hide-if-no-js'; elseif ( ( $action == 'untrash' && $the_comment_status == 'trash' ) || ( $action == 'unspam' && $the_comment_status == 'spam' ) ) { if ( '1' == get_comment_meta( $comment->comment_ID, '_wp_trash_meta_status', true ) ) $action .= ' approve'; else $action .= ' unapprove'; } echo "$sep$link"; } echo '
'; } } function column_author( $comment ) { global $comment_status; $author_url = get_comment_author_url(); if ( 'http://' == $author_url ) $author_url = ''; $author_url_display = preg_replace( '|http://(www\.)?|i', '', $author_url ); if ( strlen( $author_url_display ) > 50 ) $author_url_display = substr( $author_url_display, 0, 49 ) . '...'; echo ""; comment_author(); echo '
'; if ( !empty( $author_url ) ) echo "$author_url_display
"; if ( $this->user_can ) { if ( !empty( $comment->comment_author_email ) ) { comment_author_email_link(); echo '
'; } echo ''; comment_author_IP(); echo ''; } } function column_date( $comment ) { return get_comment_date( __( 'Y/m/d \a\t g:ia' ) ); } function column_response( $comment ) { global $post; if ( isset( $this->pending_count[$post->ID] ) ) { $pending_comments = $this->pending_count[$post->ID]; } else { $_pending_count_temp = get_pending_comments_num( array( $post->ID ) ); $pending_comments = $this->pending_count[$post->ID] = $_pending_count_temp[$post->ID]; } if ( current_user_can( 'edit_post', $post->ID ) ) { $post_link = ""; $post_link .= get_the_title( $post->ID ) . ''; } else { $post_link = get_the_title( $post->ID ); } echo ''; if ( 'attachment' == $post->post_type && ( $thumb = wp_get_attachment_image( $post->ID, array( 80, 60 ), true ) ) ) echo $thumb; } function column_default( $comment, $column_name ) { do_action( 'manage_comments_custom_column', $column_name, $comment->comment_ID ); } } /** * Post Comments List Table class. * * @package WordPress * @subpackage List_Table * @since 3.1.0 * @access private * * @see WP_Comments_Table */ class WP_Post_Comments_List_Table extends WP_Comments_List_Table { function get_column_info() { $this->_column_headers = array( array( 'author' => __( 'Author' ), 'comment' => _x( 'Comment', 'column name' ), ), array(), array(), ); return $this->_column_headers; } function get_table_classes() { $classes = parent::get_table_classes(); $classes[] = 'comments-box'; return $classes; } function display( $output_empty = false ) { extract( $this->_args ); wp_nonce_field( "fetch-list-" . get_class( $this ), '_ajax_fetch_list_nonce' ); ?> > display_rows_or_placeholder(); ?> wp-admin/includes/class-wp-filesystem-base.php0000644002347300047320000002232211656660342021274 0ustar vonfabpsaclnfind_folder(ABSPATH); //Perhaps the FTP folder is rooted at the WordPress install, Check for wp-includes folder in root, Could have some false positives, but rare. if ( ! $folder && $this->is_dir('/wp-includes') ) $folder = '/'; return $folder; } /** * Returns the path on the remote filesystem of WP_CONTENT_DIR * * @since 2.7 * @access public * @return string The location of the remote path. */ function wp_content_dir() { return $this->find_folder(WP_CONTENT_DIR); } /** * Returns the path on the remote filesystem of WP_PLUGIN_DIR * * @since 2.7 * @access public * * @return string The location of the remote path. */ function wp_plugins_dir() { return $this->find_folder(WP_PLUGIN_DIR); } /** * Returns the path on the remote filesystem of the Themes Directory * * @since 2.7 * @access public * * @return string The location of the remote path. */ function wp_themes_dir() { return $this->wp_content_dir() . '/themes'; } /** * Locates a folder on the remote filesystem. * * Deprecated; use WP_Filesystem::abspath() or WP_Filesystem::wp_*_dir() methods instead. * * @since 2.5 * @deprecated 2.7 * @access public * * @param string $base The folder to start searching from * @param bool $echo True to display debug information * @return string The location of the remote path. */ function find_base_dir($base = '.', $echo = false) { _deprecated_function(__FUNCTION__, '2.7', 'WP_Filesystem::abspath() or WP_Filesystem::wp_*_dir()' ); $this->verbose = $echo; return $this->abspath(); } /** * Locates a folder on the remote filesystem. * * Deprecated; use WP_Filesystem::abspath() or WP_Filesystem::wp_*_dir() methods instead. * * @since 2.5 * @deprecated 2.7 * @access public * * @param string $base The folder to start searching from * @param bool $echo True to display debug information * @return string The location of the remote path. */ function get_base_dir($base = '.', $echo = false) { _deprecated_function(__FUNCTION__, '2.7', 'WP_Filesystem::abspath() or WP_Filesystem::wp_*_dir()' ); $this->verbose = $echo; return $this->abspath(); } /** * Locates a folder on the remote filesystem. * * Assumes that on Windows systems, Stripping off the Drive letter is OK * Sanitizes \\ to / in windows filepaths. * * @since 2.7 * @access public * * @param string $folder the folder to locate * @return string The location of the remote path. */ function find_folder($folder) { if ( strpos($this->method, 'ftp') !== false ) { $constant_overrides = array( 'FTP_BASE' => ABSPATH, 'FTP_CONTENT_DIR' => WP_CONTENT_DIR, 'FTP_PLUGIN_DIR' => WP_PLUGIN_DIR ); foreach ( $constant_overrides as $constant => $dir ) if ( defined($constant) && $folder === $dir ) return trailingslashit(constant($constant)); } elseif ( 'direct' == $this->method ) { $folder = str_replace('\\', '/', $folder); //Windows path sanitiation return trailingslashit($folder); } $folder = preg_replace('|^([a-z]{1}):|i', '', $folder); //Strip out windows driveletter if its there. $folder = str_replace('\\', '/', $folder); //Windows path sanitiation if ( isset($this->cache[ $folder ] ) ) return $this->cache[ $folder ]; if ( $this->exists($folder) ) { //Folder exists at that absolute path. $folder = trailingslashit($folder); $this->cache[ $folder ] = $folder; return $folder; } if ( $return = $this->search_for_folder($folder) ) $this->cache[ $folder ] = $return; return $return; } /** * Locates a folder on the remote filesystem. * * Expects Windows sanitized path * * @since 2.7 * @access private * * @param string $folder the folder to locate * @param string $base the folder to start searching from * @param bool $loop if the function has recursed, Internal use only * @return string The location of the remote path. */ function search_for_folder($folder, $base = '.', $loop = false ) { if ( empty( $base ) || '.' == $base ) $base = trailingslashit($this->cwd()); $folder = untrailingslashit($folder); $folder_parts = explode('/', $folder); $last_path = $folder_parts[ count($folder_parts) - 1 ]; $files = $this->dirlist( $base ); foreach ( $folder_parts as $key ) { if ( $key == $last_path ) continue; //We want this to be caught by the next code block. //Working from /home/ to /user/ to /wordpress/ see if that file exists within the current folder, // If its found, change into it and follow through looking for it. // If it cant find WordPress down that route, it'll continue onto the next folder level, and see if that matches, and so on. // If it reaches the end, and still cant find it, it'll return false for the entire function. if ( isset($files[ $key ]) ){ //Lets try that folder: $newdir = trailingslashit(path_join($base, $key)); if ( $this->verbose ) printf( __('Changing to %s') . '
', $newdir ); if ( $ret = $this->search_for_folder( $folder, $newdir, $loop) ) return $ret; } } //Only check this as a last resort, to prevent locating the incorrect install. All above proceeedures will fail quickly if this is the right branch to take. if (isset( $files[ $last_path ] ) ) { if ( $this->verbose ) printf( __('Found %s') . '
', $base . $last_path ); return trailingslashit($base . $last_path); } if ( $loop ) return false; //Prevent tihs function looping again. //As an extra last resort, Change back to / if the folder wasnt found. This comes into effect when the CWD is /home/user/ but WP is at /var/www/.... mainly dedicated setups. return $this->search_for_folder($folder, '/', true); } /** * Returns the *nix style file permissions for a file * * From the PHP documentation page for fileperms() * * @link http://docs.php.net/fileperms * @since 2.5 * @access public * * @param string $file string filename * @return int octal representation of permissions */ function gethchmod($file){ $perms = $this->getchmod($file); if (($perms & 0xC000) == 0xC000) // Socket $info = 's'; elseif (($perms & 0xA000) == 0xA000) // Symbolic Link $info = 'l'; elseif (($perms & 0x8000) == 0x8000) // Regular $info = '-'; elseif (($perms & 0x6000) == 0x6000) // Block special $info = 'b'; elseif (($perms & 0x4000) == 0x4000) // Directory $info = 'd'; elseif (($perms & 0x2000) == 0x2000) // Character special $info = 'c'; elseif (($perms & 0x1000) == 0x1000) // FIFO pipe $info = 'p'; else // Unknown $info = 'u'; // Owner $info .= (($perms & 0x0100) ? 'r' : '-'); $info .= (($perms & 0x0080) ? 'w' : '-'); $info .= (($perms & 0x0040) ? (($perms & 0x0800) ? 's' : 'x' ) : (($perms & 0x0800) ? 'S' : '-')); // Group $info .= (($perms & 0x0020) ? 'r' : '-'); $info .= (($perms & 0x0010) ? 'w' : '-'); $info .= (($perms & 0x0008) ? (($perms & 0x0400) ? 's' : 'x' ) : (($perms & 0x0400) ? 'S' : '-')); // World $info .= (($perms & 0x0004) ? 'r' : '-'); $info .= (($perms & 0x0002) ? 'w' : '-'); $info .= (($perms & 0x0001) ? (($perms & 0x0200) ? 't' : 'x' ) : (($perms & 0x0200) ? 'T' : '-')); return $info; } /** * Converts *nix style file permissions to a octal number. * * Converts '-rw-r--r--' to 0644 * From "info at rvgate dot nl"'s comment on the PHP documentation for chmod() * * @link http://docs.php.net/manual/en/function.chmod.php#49614 * @since 2.5 * @access public * * @param string $mode string *nix style file permission * @return int octal representation */ function getnumchmodfromh($mode) { $realmode = ''; $legal = array('', 'w', 'r', 'x', '-'); $attarray = preg_split('//', $mode); for ($i=0; $i < count($attarray); $i++) if ($key = array_search($attarray[$i], $legal)) $realmode .= $legal[$key]; $mode = str_pad($realmode, 9, '-'); $trans = array('-'=>'0', 'r'=>'4', 'w'=>'2', 'x'=>'1'); $mode = strtr($mode,$trans); $newmode = ''; $newmode .= $mode[0] + $mode[1] + $mode[2]; $newmode .= $mode[3] + $mode[4] + $mode[5]; $newmode .= $mode[6] + $mode[7] + $mode[8]; return $newmode; } /** * Determines if the string provided contains binary characters. * * @since 2.7 * @access private * * @param string $text String to test against * @return bool true if string is binary, false otherwise */ function is_binary( $text ) { return (bool) preg_match('|[^\x20-\x7E]|', $text); //chr(32)..chr(127) } } ?> wp-admin/includes/class-wp-filesystem-direct.php0000644002347300047320000002232711656660342021641 0ustar vonfabpsaclnmethod = 'direct'; $this->errors = new WP_Error(); } /** * connect filesystem. * * @return bool Returns true on success or false on failure (always true for WP_Filesystem_Direct). */ function connect() { return true; } /** * Reads entire file into a string * * @param string $file Name of the file to read. * @return string|bool The function returns the read data or false on failure. */ function get_contents($file) { return @file_get_contents($file); } /** * Reads entire file into an array * * @param string $file Path to the file. * @return array|bool the file contents in an array or false on failure. */ function get_contents_array($file) { return @file($file); } /** * Write a string to a file * * @param string $file Remote path to the file where to write the data. * @param string $contents The data to write. * @param int $mode (optional) The file permissions as octal number, usually 0644. * @return bool False upon failure. */ function put_contents($file, $contents, $mode = false ) { if ( ! ($fp = @fopen($file, 'w')) ) return false; @fwrite($fp, $contents); @fclose($fp); $this->chmod($file, $mode); return true; } /** * Gets the current working directory * * @return string|bool the current working directory on success, or false on failure. */ function cwd() { return @getcwd(); } /** * Change directory * * @param string $dir The new current directory. * @return bool Returns true on success or false on failure. */ function chdir($dir) { return @chdir($dir); } /** * Changes file group * * @param string $file Path to the file. * @param mixed $group A group name or number. * @param bool $recursive (optional) If set True changes file group recursivly. Defaults to False. * @return bool Returns true on success or false on failure. */ function chgrp($file, $group, $recursive = false) { if ( ! $this->exists($file) ) return false; if ( ! $recursive ) return @chgrp($file, $group); if ( ! $this->is_dir($file) ) return @chgrp($file, $group); //Is a directory, and we want recursive $file = trailingslashit($file); $filelist = $this->dirlist($file); foreach ($filelist as $filename) $this->chgrp($file . $filename, $group, $recursive); return true; } /** * Changes filesystem permissions * * @param string $file Path to the file. * @param int $mode (optional) The permissions as octal number, usually 0644 for files, 0755 for dirs. * @param bool $recursive (optional) If set True changes file group recursivly. Defaults to False. * @return bool Returns true on success or false on failure. */ function chmod($file, $mode = false, $recursive = false) { if ( ! $mode ) { if ( $this->is_file($file) ) $mode = FS_CHMOD_FILE; elseif ( $this->is_dir($file) ) $mode = FS_CHMOD_DIR; else return false; } if ( ! $recursive || ! $this->is_dir($file) ) return @chmod($file, $mode); //Is a directory, and we want recursive $file = trailingslashit($file); $filelist = $this->dirlist($file); foreach ( (array)$filelist as $filename => $filemeta) $this->chmod($file . $filename, $mode, $recursive); return true; } /** * Changes file owner * * @param string $file Path to the file. * @param mixed $owner A user name or number. * @param bool $recursive (optional) If set True changes file owner recursivly. Defaults to False. * @return bool Returns true on success or false on failure. */ function chown($file, $owner, $recursive = false) { if ( ! $this->exists($file) ) return false; if ( ! $recursive ) return @chown($file, $owner); if ( ! $this->is_dir($file) ) return @chown($file, $owner); //Is a directory, and we want recursive $filelist = $this->dirlist($file); foreach ($filelist as $filename) { $this->chown($file . '/' . $filename, $owner, $recursive); } return true; } /** * Gets file owner * * @param string $file Path to the file. * @return string Username of the user. */ function owner($file) { $owneruid = @fileowner($file); if ( ! $owneruid ) return false; if ( ! function_exists('posix_getpwuid') ) return $owneruid; $ownerarray = posix_getpwuid($owneruid); return $ownerarray['name']; } /** * Gets file permissions * * FIXME does not handle errors in fileperms() * * @param string $file Path to the file. * @return string Mode of the file (last 4 digits). */ function getchmod($file) { return substr(decoct(@fileperms($file)),3); } function group($file) { $gid = @filegroup($file); if ( ! $gid ) return false; if ( ! function_exists('posix_getgrgid') ) return $gid; $grouparray = posix_getgrgid($gid); return $grouparray['name']; } function copy($source, $destination, $overwrite = false) { if ( ! $overwrite && $this->exists($destination) ) return false; return copy($source, $destination); } function move($source, $destination, $overwrite = false) { if ( ! $overwrite && $this->exists($destination) ) return false; // try using rename first. if that fails (for example, source is read only) try copy if ( @rename($source, $destination) ) return true; if ( $this->copy($source, $destination, $overwrite) && $this->exists($destination) ) { $this->delete($source); return true; } else { return false; } } function delete($file, $recursive = false) { if ( empty($file) ) //Some filesystems report this as /, which can cause non-expected recursive deletion of all files in the filesystem. return false; $file = str_replace('\\', '/', $file); //for win32, occasional problems deleteing files otherwise if ( $this->is_file($file) ) return @unlink($file); if ( ! $recursive && $this->is_dir($file) ) return @rmdir($file); //At this point its a folder, and we're in recursive mode $file = trailingslashit($file); $filelist = $this->dirlist($file, true); $retval = true; if ( is_array($filelist) ) //false if no files, So check first. foreach ($filelist as $filename => $fileinfo) if ( ! $this->delete($file . $filename, $recursive) ) $retval = false; if ( file_exists($file) && ! @rmdir($file) ) $retval = false; return $retval; } function exists($file) { return @file_exists($file); } function is_file($file) { return @is_file($file); } function is_dir($path) { return @is_dir($path); } function is_readable($file) { return @is_readable($file); } function is_writable($file) { return @is_writable($file); } function atime($file) { return @fileatime($file); } function mtime($file) { return @filemtime($file); } function size($file) { return @filesize($file); } function touch($file, $time = 0, $atime = 0) { if ($time == 0) $time = time(); if ($atime == 0) $atime = time(); return @touch($file, $time, $atime); } function mkdir($path, $chmod = false, $chown = false, $chgrp = false) { // safe mode fails with a trailing slash under certain PHP versions. $path = untrailingslashit($path); if ( empty($path) ) $path = '/'; if ( ! $chmod ) $chmod = FS_CHMOD_DIR; if ( ! @mkdir($path) ) return false; $this->chmod($path, $chmod); if ( $chown ) $this->chown($path, $chown); if ( $chgrp ) $this->chgrp($path, $chgrp); return true; } function rmdir($path, $recursive = false) { return $this->delete($path, $recursive); } function dirlist($path, $include_hidden = true, $recursive = false) { if ( $this->is_file($path) ) { $limit_file = basename($path); $path = dirname($path); } else { $limit_file = false; } if ( ! $this->is_dir($path) ) return false; $dir = @dir($path); if ( ! $dir ) return false; $ret = array(); while (false !== ($entry = $dir->read()) ) { $struc = array(); $struc['name'] = $entry; if ( '.' == $struc['name'] || '..' == $struc['name'] ) continue; if ( ! $include_hidden && '.' == $struc['name'][0] ) continue; if ( $limit_file && $struc['name'] != $limit_file) continue; $struc['perms'] = $this->gethchmod($path.'/'.$entry); $struc['permsn'] = $this->getnumchmodfromh($struc['perms']); $struc['number'] = false; $struc['owner'] = $this->owner($path.'/'.$entry); $struc['group'] = $this->group($path.'/'.$entry); $struc['size'] = $this->size($path.'/'.$entry); $struc['lastmodunix']= $this->mtime($path.'/'.$entry); $struc['lastmod'] = date('M j',$struc['lastmodunix']); $struc['time'] = date('h:i:s',$struc['lastmodunix']); $struc['type'] = $this->is_dir($path.'/'.$entry) ? 'd' : 'f'; if ( 'd' == $struc['type'] ) { if ( $recursive ) $struc['files'] = $this->dirlist($path . '/' . $struc['name'], $include_hidden, $recursive); else $struc['files'] = array(); } $ret[ $struc['name'] ] = $struc; } $dir->close(); unset($dir); return $ret; } } ?> wp-admin/includes/class-wp-filesystem-ftpext.php0000644002347300047320000002512011656660343021674 0ustar vonfabpsaclnmethod = 'ftpext'; $this->errors = new WP_Error(); //Check if possible to use ftp functions. if ( ! extension_loaded('ftp') ) { $this->errors->add('no_ftp_ext', __('The ftp PHP extension is not available')); return false; } // Set defaults: //This Class uses the timeout on a per-connection basis, Others use it on a per-action basis. if ( ! defined('FS_TIMEOUT') ) define('FS_TIMEOUT', 240); if ( empty($opt['port']) ) $this->options['port'] = 21; else $this->options['port'] = $opt['port']; if ( empty($opt['hostname']) ) $this->errors->add('empty_hostname', __('FTP hostname is required')); else $this->options['hostname'] = $opt['hostname']; if ( ! empty($opt['base']) ) $this->wp_base = $opt['base']; // Check if the options provided are OK. if ( empty($opt['username']) ) $this->errors->add('empty_username', __('FTP username is required')); else $this->options['username'] = $opt['username']; if ( empty($opt['password']) ) $this->errors->add('empty_password', __('FTP password is required')); else $this->options['password'] = $opt['password']; $this->options['ssl'] = false; if ( isset($opt['connection_type']) && 'ftps' == $opt['connection_type'] ) $this->options['ssl'] = true; } function connect() { if ( isset($this->options['ssl']) && $this->options['ssl'] && function_exists('ftp_ssl_connect') ) $this->link = @ftp_ssl_connect($this->options['hostname'], $this->options['port'], FS_CONNECT_TIMEOUT); else $this->link = @ftp_connect($this->options['hostname'], $this->options['port'], FS_CONNECT_TIMEOUT); if ( ! $this->link ) { $this->errors->add('connect', sprintf(__('Failed to connect to FTP Server %1$s:%2$s'), $this->options['hostname'], $this->options['port'])); return false; } if ( ! @ftp_login($this->link,$this->options['username'], $this->options['password']) ) { $this->errors->add('auth', sprintf(__('Username/Password incorrect for %s'), $this->options['username'])); return false; } //Set the Connection to use Passive FTP @ftp_pasv( $this->link, true ); if ( @ftp_get_option($this->link, FTP_TIMEOUT_SEC) < FS_TIMEOUT ) @ftp_set_option($this->link, FTP_TIMEOUT_SEC, FS_TIMEOUT); return true; } function get_contents($file, $type = '', $resumepos = 0 ) { if ( empty($type) ) $type = FTP_BINARY; $tempfile = wp_tempnam($file); $temp = fopen($tempfile, 'w+'); if ( ! $temp ) return false; if ( ! @ftp_fget($this->link, $temp, $file, $type, $resumepos) ) return false; fseek($temp, 0); //Skip back to the start of the file being written to $contents = ''; while ( ! feof($temp) ) $contents .= fread($temp, 8192); fclose($temp); unlink($tempfile); return $contents; } function get_contents_array($file) { return explode("\n", $this->get_contents($file)); } function put_contents($file, $contents, $mode = false ) { $tempfile = wp_tempnam($file); $temp = fopen($tempfile, 'w+'); if ( ! $temp ) return false; fwrite($temp, $contents); fseek($temp, 0); //Skip back to the start of the file being written to $type = $this->is_binary($contents) ? FTP_BINARY : FTP_ASCII; $ret = @ftp_fput($this->link, $file, $temp, $type); fclose($temp); unlink($tempfile); $this->chmod($file, $mode); return $ret; } function cwd() { $cwd = @ftp_pwd($this->link); if ( $cwd ) $cwd = trailingslashit($cwd); return $cwd; } function chdir($dir) { return @ftp_chdir($this->link, $dir); } function chgrp($file, $group, $recursive = false ) { return false; } function chmod($file, $mode = false, $recursive = false) { if ( ! $mode ) { if ( $this->is_file($file) ) $mode = FS_CHMOD_FILE; elseif ( $this->is_dir($file) ) $mode = FS_CHMOD_DIR; else return false; } // chmod any sub-objects if recursive. if ( $recursive && $this->is_dir($file) ) { $filelist = $this->dirlist($file); foreach ( (array)$filelist as $filename => $filemeta ) $this->chmod($file . '/' . $filename, $mode, $recursive); } // chmod the file or directory if ( ! function_exists('ftp_chmod') ) return (bool)@ftp_site($this->link, sprintf('CHMOD %o %s', $mode, $file)); return (bool)@ftp_chmod($this->link, $mode, $file); } function chown($file, $owner, $recursive = false ) { return false; } function owner($file) { $dir = $this->dirlist($file); return $dir[$file]['owner']; } function getchmod($file) { $dir = $this->dirlist($file); return $dir[$file]['permsn']; } function group($file) { $dir = $this->dirlist($file); return $dir[$file]['group']; } function copy($source, $destination, $overwrite = false ) { if ( ! $overwrite && $this->exists($destination) ) return false; $content = $this->get_contents($source); if ( false === $content) return false; return $this->put_contents($destination, $content); } function move($source, $destination, $overwrite = false) { return ftp_rename($this->link, $source, $destination); } function delete($file, $recursive = false ) { if ( empty($file) ) return false; if ( $this->is_file($file) ) return @ftp_delete($this->link, $file); if ( !$recursive ) return @ftp_rmdir($this->link, $file); $filelist = $this->dirlist( trailingslashit($file) ); if ( !empty($filelist) ) foreach ( $filelist as $delete_file ) $this->delete( trailingslashit($file) . $delete_file['name'], $recursive); return @ftp_rmdir($this->link, $file); } function exists($file) { $list = @ftp_nlist($this->link, $file); return !empty($list); //empty list = no file, so invert. } function is_file($file) { return $this->exists($file) && !$this->is_dir($file); } function is_dir($path) { $cwd = $this->cwd(); $result = @ftp_chdir($this->link, trailingslashit($path) ); if ( $result && $path == $this->cwd() || $this->cwd() != $cwd ) { @ftp_chdir($this->link, $cwd); return true; } return false; } function is_readable($file) { //Get dir list, Check if the file is readable by the current user?? return true; } function is_writable($file) { //Get dir list, Check if the file is writable by the current user?? return true; } function atime($file) { return false; } function mtime($file) { return ftp_mdtm($this->link, $file); } function size($file) { return ftp_size($this->link, $file); } function touch($file, $time = 0, $atime = 0) { return false; } function mkdir($path, $chmod = false, $chown = false, $chgrp = false) { if ( !@ftp_mkdir($this->link, $path) ) return false; $this->chmod($path, $chmod); if ( $chown ) $this->chown($path, $chown); if ( $chgrp ) $this->chgrp($path, $chgrp); return true; } function rmdir($path, $recursive = false) { return $this->delete($path, $recursive); } function parselisting($line) { static $is_windows; if ( is_null($is_windows) ) $is_windows = stripos( ftp_systype($this->link), 'win') !== false; if ( $is_windows && preg_match('/([0-9]{2})-([0-9]{2})-([0-9]{2}) +([0-9]{2}):([0-9]{2})(AM|PM) +([0-9]+|) +(.+)/', $line, $lucifer) ) { $b = array(); if ( $lucifer[3] < 70 ) $lucifer[3] +=2000; else $lucifer[3] += 1900; // 4digit year fix $b['isdir'] = ( $lucifer[7] == ''); if ( $b['isdir'] ) $b['type'] = 'd'; else $b['type'] = 'f'; $b['size'] = $lucifer[7]; $b['month'] = $lucifer[1]; $b['day'] = $lucifer[2]; $b['year'] = $lucifer[3]; $b['hour'] = $lucifer[4]; $b['minute'] = $lucifer[5]; $b['time'] = @mktime($lucifer[4] + (strcasecmp($lucifer[6], "PM") == 0 ? 12 : 0), $lucifer[5], 0, $lucifer[1], $lucifer[2], $lucifer[3]); $b['am/pm'] = $lucifer[6]; $b['name'] = $lucifer[8]; } elseif ( !$is_windows && $lucifer = preg_split('/[ ]/', $line, 9, PREG_SPLIT_NO_EMPTY)) { //echo $line."\n"; $lcount = count($lucifer); if ( $lcount < 8 ) return ''; $b = array(); $b['isdir'] = $lucifer[0]{0} === 'd'; $b['islink'] = $lucifer[0]{0} === 'l'; if ( $b['isdir'] ) $b['type'] = 'd'; elseif ( $b['islink'] ) $b['type'] = 'l'; else $b['type'] = 'f'; $b['perms'] = $lucifer[0]; $b['number'] = $lucifer[1]; $b['owner'] = $lucifer[2]; $b['group'] = $lucifer[3]; $b['size'] = $lucifer[4]; if ( $lcount == 8 ) { sscanf($lucifer[5], '%d-%d-%d', $b['year'], $b['month'], $b['day']); sscanf($lucifer[6], '%d:%d', $b['hour'], $b['minute']); $b['time'] = @mktime($b['hour'], $b['minute'], 0, $b['month'], $b['day'], $b['year']); $b['name'] = $lucifer[7]; } else { $b['month'] = $lucifer[5]; $b['day'] = $lucifer[6]; if ( preg_match('/([0-9]{2}):([0-9]{2})/', $lucifer[7], $l2) ) { $b['year'] = date("Y"); $b['hour'] = $l2[1]; $b['minute'] = $l2[2]; } else { $b['year'] = $lucifer[7]; $b['hour'] = 0; $b['minute'] = 0; } $b['time'] = strtotime( sprintf('%d %s %d %02d:%02d', $b['day'], $b['month'], $b['year'], $b['hour'], $b['minute']) ); $b['name'] = $lucifer[8]; } } return $b; } function dirlist($path = '.', $include_hidden = true, $recursive = false) { if ( $this->is_file($path) ) { $limit_file = basename($path); $path = dirname($path) . '/'; } else { $limit_file = false; } $pwd = @ftp_pwd($this->link); if ( ! @ftp_chdir($this->link, $path) ) // Cant change to folder = folder doesnt exist return false; $list = @ftp_rawlist($this->link, '-a', false); @ftp_chdir($this->link, $pwd); if ( empty($list) ) // Empty array = non-existent folder (real folder will show . at least) return false; $dirlist = array(); foreach ( $list as $k => $v ) { $entry = $this->parselisting($v); if ( empty($entry) ) continue; if ( '.' == $entry['name'] || '..' == $entry['name'] ) continue; if ( ! $include_hidden && '.' == $entry['name'][0] ) continue; if ( $limit_file && $entry['name'] != $limit_file) continue; $dirlist[ $entry['name'] ] = $entry; } $ret = array(); foreach ( (array)$dirlist as $struc ) { if ( 'd' == $struc['type'] ) { if ( $recursive ) $struc['files'] = $this->dirlist($path . '/' . $struc['name'], $include_hidden, $recursive); else $struc['files'] = array(); } $ret[ $struc['name'] ] = $struc; } return $ret; } function __destruct() { if ( $this->link ) ftp_close($this->link); } } ?> wp-admin/includes/class-wp-filesystem-ftpsockets.php0000644002347300047320000001662211656660343022556 0ustar vonfabpsaclnmethod = 'ftpsockets'; $this->errors = new WP_Error(); //Check if possible to use ftp functions. if ( ! @include_once ABSPATH . 'wp-admin/includes/class-ftp.php' ) return false; $this->ftp = new ftp(); //Set defaults: if ( empty($opt['port']) ) $this->options['port'] = 21; else $this->options['port'] = $opt['port']; if ( empty($opt['hostname']) ) $this->errors->add('empty_hostname', __('FTP hostname is required')); else $this->options['hostname'] = $opt['hostname']; if ( ! empty($opt['base']) ) $this->wp_base = $opt['base']; // Check if the options provided are OK. if ( empty ($opt['username']) ) $this->errors->add('empty_username', __('FTP username is required')); else $this->options['username'] = $opt['username']; if ( empty ($opt['password']) ) $this->errors->add('empty_password', __('FTP password is required')); else $this->options['password'] = $opt['password']; } function connect() { if ( ! $this->ftp ) return false; $this->ftp->setTimeout(FS_CONNECT_TIMEOUT); if ( ! $this->ftp->SetServer($this->options['hostname'], $this->options['port']) ) { $this->errors->add('connect', sprintf(__('Failed to connect to FTP Server %1$s:%2$s'), $this->options['hostname'], $this->options['port'])); return false; } if ( ! $this->ftp->connect() ) { $this->errors->add('connect', sprintf(__('Failed to connect to FTP Server %1$s:%2$s'), $this->options['hostname'], $this->options['port'])); return false; } if ( ! $this->ftp->login($this->options['username'], $this->options['password']) ) { $this->errors->add('auth', sprintf(__('Username/Password incorrect for %s'), $this->options['username'])); return false; } $this->ftp->SetType(FTP_AUTOASCII); $this->ftp->Passive(true); $this->ftp->setTimeout(FS_TIMEOUT); return true; } function get_contents($file, $type = '', $resumepos = 0) { if ( ! $this->exists($file) ) return false; if ( empty($type) ) $type = FTP_AUTOASCII; $this->ftp->SetType($type); $temp = wp_tempnam( $file ); if ( ! $temphandle = fopen($temp, 'w+') ) return false; if ( ! $this->ftp->fget($temphandle, $file) ) { fclose($temphandle); unlink($temp); return ''; //Blank document, File does exist, Its just blank. } fseek($temphandle, 0); //Skip back to the start of the file being written to $contents = ''; while ( ! feof($temphandle) ) $contents .= fread($temphandle, 8192); fclose($temphandle); unlink($temp); return $contents; } function get_contents_array($file) { return explode("\n", $this->get_contents($file) ); } function put_contents($file, $contents, $mode = false ) { $temp = wp_tempnam( $file ); if ( ! $temphandle = @fopen($temp, 'w+') ) { unlink($temp); return false; } fwrite($temphandle, $contents); fseek($temphandle, 0); //Skip back to the start of the file being written to $type = $this->is_binary($contents) ? FTP_BINARY : FTP_ASCII; $this->ftp->SetType($type); $ret = $this->ftp->fput($file, $temphandle); fclose($temphandle); unlink($temp); $this->chmod($file, $mode); return $ret; } function cwd() { $cwd = $this->ftp->pwd(); if ( $cwd ) $cwd = trailingslashit($cwd); return $cwd; } function chdir($file) { return $this->ftp->chdir($file); } function chgrp($file, $group, $recursive = false ) { return false; } function chmod($file, $mode = false, $recursive = false ) { if ( ! $mode ) { if ( $this->is_file($file) ) $mode = FS_CHMOD_FILE; elseif ( $this->is_dir($file) ) $mode = FS_CHMOD_DIR; else return false; } // chmod any sub-objects if recursive. if ( $recursive && $this->is_dir($file) ) { $filelist = $this->dirlist($file); foreach ( (array)$filelist as $filename => $filemeta ) $this->chmod($file . '/' . $filename, $mode, $recursive); } // chmod the file or directory return $this->ftp->chmod($file, $mode); } function chown($file, $owner, $recursive = false ) { return false; } function owner($file) { $dir = $this->dirlist($file); return $dir[$file]['owner']; } function getchmod($file) { $dir = $this->dirlist($file); return $dir[$file]['permsn']; } function group($file) { $dir = $this->dirlist($file); return $dir[$file]['group']; } function copy($source, $destination, $overwrite = false ) { if ( ! $overwrite && $this->exists($destination) ) return false; $content = $this->get_contents($source); if ( false === $content ) return false; return $this->put_contents($destination, $content); } function move($source, $destination, $overwrite = false ) { return $this->ftp->rename($source, $destination); } function delete($file, $recursive = false ) { if ( empty($file) ) return false; if ( $this->is_file($file) ) return $this->ftp->delete($file); if ( !$recursive ) return $this->ftp->rmdir($file); return $this->ftp->mdel($file); } function exists($file) { return $this->ftp->is_exists($file); } function is_file($file) { if ( $this->is_dir($file) ) return false; if ( $this->exists($file) ) return true; return false; } function is_dir($path) { $cwd = $this->cwd(); if ( $this->chdir($path) ) { $this->chdir($cwd); return true; } return false; } function is_readable($file) { //Get dir list, Check if the file is writable by the current user?? return true; } function is_writable($file) { //Get dir list, Check if the file is writable by the current user?? return true; } function atime($file) { return false; } function mtime($file) { return $this->ftp->mdtm($file); } function size($file) { return $this->ftp->filesize($file); } function touch($file, $time = 0, $atime = 0 ) { return false; } function mkdir($path, $chmod = false, $chown = false, $chgrp = false ) { if ( ! $this->ftp->mkdir($path) ) return false; if ( ! $chmod ) $chmod = FS_CHMOD_DIR; $this->chmod($path, $chmod); if ( $chown ) $this->chown($path, $chown); if ( $chgrp ) $this->chgrp($path, $chgrp); return true; } function rmdir($path, $recursive = false ) { $this->delete($path, $recursive); } function dirlist($path = '.', $include_hidden = true, $recursive = false ) { if ( $this->is_file($path) ) { $limit_file = basename($path); $path = dirname($path) . '/'; } else { $limit_file = false; } $list = $this->ftp->dirlist($path); if ( empty($list) && !$this->exists($path) ) return false; $ret = array(); foreach ( $list as $struc ) { if ( '.' == $struc['name'] || '..' == $struc['name'] ) continue; if ( ! $include_hidden && '.' == $struc['name'][0] ) continue; if ( $limit_file && $struc['name'] != $limit_file ) continue; if ( 'd' == $struc['type'] ) { if ( $recursive ) $struc['files'] = $this->dirlist($path . '/' . $struc['name'], $include_hidden, $recursive); else $struc['files'] = array(); } $ret[ $struc['name'] ] = $struc; } return $ret; } function __destruct() { $this->ftp->quit(); } } ?> wp-admin/includes/class-wp-filesystem-ssh2.php0000644002347300047320000002610411656660343021244 0ustar vonfabpsaclnmethod = 'ssh2'; $this->errors = new WP_Error(); //Check if possible to use ssh2 functions. if ( ! extension_loaded('ssh2') ) { $this->errors->add('no_ssh2_ext', __('The ssh2 PHP extension is not available')); return false; } if ( !function_exists('stream_get_contents') ) { $this->errors->add('ssh2_php_requirement', __('The ssh2 PHP extension is available, however, we require the PHP5 function stream_get_contents()')); return false; } // Set defaults: if ( empty($opt['port']) ) $this->options['port'] = 22; else $this->options['port'] = $opt['port']; if ( empty($opt['hostname']) ) $this->errors->add('empty_hostname', __('SSH2 hostname is required')); else $this->options['hostname'] = $opt['hostname']; if ( ! empty($opt['base']) ) $this->wp_base = $opt['base']; // Check if the options provided are OK. if ( !empty ($opt['public_key']) && !empty ($opt['private_key']) ) { $this->options['public_key'] = $opt['public_key']; $this->options['private_key'] = $opt['private_key']; $this->options['hostkey'] = array('hostkey' => 'ssh-rsa'); $this->keys = true; } elseif ( empty ($opt['username']) ) { $this->errors->add('empty_username', __('SSH2 username is required')); } if ( !empty($opt['username']) ) $this->options['username'] = $opt['username']; if ( empty ($opt['password']) ) { if ( !$this->keys ) //password can be blank if we are using keys $this->errors->add('empty_password', __('SSH2 password is required')); } else { $this->options['password'] = $opt['password']; } } function connect() { if ( ! $this->keys ) { $this->link = @ssh2_connect($this->options['hostname'], $this->options['port']); } else { $this->link = @ssh2_connect($this->options['hostname'], $this->options['port'], $this->options['hostkey']); } if ( ! $this->link ) { $this->errors->add('connect', sprintf(__('Failed to connect to SSH2 Server %1$s:%2$s'), $this->options['hostname'], $this->options['port'])); return false; } if ( !$this->keys ) { if ( ! @ssh2_auth_password($this->link, $this->options['username'], $this->options['password']) ) { $this->errors->add('auth', sprintf(__('Username/Password incorrect for %s'), $this->options['username'])); return false; } } else { if ( ! @ssh2_auth_pubkey_file($this->link, $this->options['username'], $this->options['public_key'], $this->options['private_key'], $this->options['password'] ) ) { $this->errors->add('auth', sprintf(__('Public and Private keys incorrect for %s'), $this->options['username'])); return false; } } $this->sftp_link = ssh2_sftp($this->link); return true; } function run_command( $command, $returnbool = false) { if ( ! $this->link ) return false; if ( ! ($stream = ssh2_exec($this->link, $command)) ) { $this->errors->add('command', sprintf(__('Unable to perform command: %s'), $command)); } else { stream_set_blocking( $stream, true ); stream_set_timeout( $stream, FS_TIMEOUT ); $data = stream_get_contents( $stream ); fclose( $stream ); if ( $returnbool ) return ( $data === false ) ? false : '' != trim($data); else return $data; } return false; } function get_contents($file, $type = '', $resumepos = 0 ) { $file = ltrim($file, '/'); return file_get_contents('ssh2.sftp://' . $this->sftp_link . '/' . $file); } function get_contents_array($file) { $file = ltrim($file, '/'); return file('ssh2.sftp://' . $this->sftp_link . '/' . $file); } function put_contents($file, $contents, $mode = false ) { $file = ltrim($file, '/'); $ret = file_put_contents('ssh2.sftp://' . $this->sftp_link . '/' . $file, $contents); $this->chmod($file, $mode); return false !== $ret; } function cwd() { $cwd = $this->run_command('pwd'); if ( $cwd ) $cwd = trailingslashit($cwd); return $cwd; } function chdir($dir) { return $this->run_command('cd ' . $dir, true); } function chgrp($file, $group, $recursive = false ) { if ( ! $this->exists($file) ) return false; if ( ! $recursive || ! $this->is_dir($file) ) return $this->run_command(sprintf('chgrp %o %s', $mode, escapeshellarg($file)), true); return $this->run_command(sprintf('chgrp -R %o %s', $mode, escapeshellarg($file)), true); } function chmod($file, $mode = false, $recursive = false) { if ( ! $this->exists($file) ) return false; if ( ! $mode ) { if ( $this->is_file($file) ) $mode = FS_CHMOD_FILE; elseif ( $this->is_dir($file) ) $mode = FS_CHMOD_DIR; else return false; } if ( ! $recursive || ! $this->is_dir($file) ) return $this->run_command(sprintf('chmod %o %s', $mode, escapeshellarg($file)), true); return $this->run_command(sprintf('chmod -R %o %s', $mode, escapeshellarg($file)), true); } function chown($file, $owner, $recursive = false ) { if ( ! $this->exists($file) ) return false; if ( ! $recursive || ! $this->is_dir($file) ) return $this->run_command(sprintf('chown %o %s', $mode, escapeshellarg($file)), true); return $this->run_command(sprintf('chown -R %o %s', $mode, escapeshellarg($file)), true); } function owner($file) { $owneruid = @fileowner('ssh2.sftp://' . $this->sftp_link . '/' . ltrim($file, '/')); if ( ! $owneruid ) return false; if ( ! function_exists('posix_getpwuid') ) return $owneruid; $ownerarray = posix_getpwuid($owneruid); return $ownerarray['name']; } function getchmod($file) { return substr(decoct(@fileperms( 'ssh2.sftp://' . $this->sftp_link . '/' . ltrim($file, '/') )),3); } function group($file) { $gid = @filegroup('ssh2.sftp://' . $this->sftp_link . '/' . ltrim($file, '/')); if ( ! $gid ) return false; if ( ! function_exists('posix_getgrgid') ) return $gid; $grouparray = posix_getgrgid($gid); return $grouparray['name']; } function copy($source, $destination, $overwrite = false ) { if ( ! $overwrite && $this->exists($destination) ) return false; $content = $this->get_contents($source); if ( false === $content) return false; return $this->put_contents($destination, $content); } function move($source, $destination, $overwrite = false) { return @ssh2_sftp_rename($this->link, $source, $destination); } function delete($file, $recursive = false) { if ( $this->is_file($file) ) return ssh2_sftp_unlink($this->sftp_link, $file); if ( ! $recursive ) return ssh2_sftp_rmdir($this->sftp_link, $file); $filelist = $this->dirlist($file); if ( is_array($filelist) ) { foreach ( $filelist as $filename => $fileinfo) { $this->delete($file . '/' . $filename, $recursive); } } return ssh2_sftp_rmdir($this->sftp_link, $file); } function exists($file) { $file = ltrim($file, '/'); return file_exists('ssh2.sftp://' . $this->sftp_link . '/' . $file); } function is_file($file) { $file = ltrim($file, '/'); return is_file('ssh2.sftp://' . $this->sftp_link . '/' . $file); } function is_dir($path) { $path = ltrim($path, '/'); return is_dir('ssh2.sftp://' . $this->sftp_link . '/' . $path); } function is_readable($file) { $file = ltrim($file, '/'); return is_readable('ssh2.sftp://' . $this->sftp_link . '/' . $file); } function is_writable($file) { $file = ltrim($file, '/'); return is_writable('ssh2.sftp://' . $this->sftp_link . '/' . $file); } function atime($file) { $file = ltrim($file, '/'); return fileatime('ssh2.sftp://' . $this->sftp_link . '/' . $file); } function mtime($file) { $file = ltrim($file, '/'); return filemtime('ssh2.sftp://' . $this->sftp_link . '/' . $file); } function size($file) { $file = ltrim($file, '/'); return filesize('ssh2.sftp://' . $this->sftp_link . '/' . $file); } function touch($file, $time = 0, $atime = 0) { //Not implmented. } function mkdir($path, $chmod = false, $chown = false, $chgrp = false) { $path = untrailingslashit($path); if ( ! $chmod ) $chmod = FS_CHMOD_DIR; if ( ! ssh2_sftp_mkdir($this->sftp_link, $path, $chmod, true) ) return false; if ( $chown ) $this->chown($path, $chown); if ( $chgrp ) $this->chgrp($path, $chgrp); return true; } function rmdir($path, $recursive = false) { return $this->delete($path, $recursive); } function dirlist($path, $include_hidden = true, $recursive = false) { if ( $this->is_file($path) ) { $limit_file = basename($path); $path = dirname($path); } else { $limit_file = false; } if ( ! $this->is_dir($path) ) return false; $ret = array(); $dir = @dir('ssh2.sftp://' . $this->sftp_link .'/' . ltrim($path, '/') ); if ( ! $dir ) return false; while (false !== ($entry = $dir->read()) ) { $struc = array(); $struc['name'] = $entry; if ( '.' == $struc['name'] || '..' == $struc['name'] ) continue; //Do not care about these folders. if ( ! $include_hidden && '.' == $struc['name'][0] ) continue; if ( $limit_file && $struc['name'] != $limit_file ) continue; $struc['perms'] = $this->gethchmod($path.'/'.$entry); $struc['permsn'] = $this->getnumchmodfromh($struc['perms']); $struc['number'] = false; $struc['owner'] = $this->owner($path.'/'.$entry); $struc['group'] = $this->group($path.'/'.$entry); $struc['size'] = $this->size($path.'/'.$entry); $struc['lastmodunix']= $this->mtime($path.'/'.$entry); $struc['lastmod'] = date('M j',$struc['lastmodunix']); $struc['time'] = date('h:i:s',$struc['lastmodunix']); $struc['type'] = $this->is_dir($path.'/'.$entry) ? 'd' : 'f'; if ( 'd' == $struc['type'] ) { if ( $recursive ) $struc['files'] = $this->dirlist($path . '/' . $struc['name'], $include_hidden, $recursive); else $struc['files'] = array(); } $ret[ $struc['name'] ] = $struc; } $dir->close(); unset($dir); return $ret; } } wp-admin/includes/class-wp-importer.php0000644002347300047320000001544711656660343020054 0ustar vonfabpsacln__construct(); } /** * Returns array with imported permalinks from WordPress database * * @param string $bid * @return array */ function get_imported_posts( $importer_name, $bid ) { global $wpdb; $hashtable = array(); $limit = 100; $offset = 0; // Grab all posts in chunks do { $meta_key = $importer_name . '_' . $bid . '_permalink'; $sql = $wpdb->prepare( "SELECT post_id, meta_value FROM $wpdb->postmeta WHERE meta_key = '%s' LIMIT %d,%d", $meta_key, $offset, $limit ); $results = $wpdb->get_results( $sql ); // Increment offset $offset = ( $limit + $offset ); if ( !empty( $results ) ) { foreach ( $results as $r ) { // Set permalinks into array $hashtable[$r->meta_value] = intval( $r->post_id ); } } } while ( count( $results ) == $limit ); // unset to save memory unset( $results, $r ); return $hashtable; } /** * Return count of imported permalinks from WordPress database * * @param string $bid * @return int */ function count_imported_posts( $importer_name, $bid ) { global $wpdb; $count = 0; // Get count of permalinks $meta_key = $importer_name . '_' . $bid . '_permalink'; $sql = $wpdb->prepare( "SELECT COUNT( post_id ) AS cnt FROM $wpdb->postmeta WHERE meta_key = '%s'", $meta_key ); $result = $wpdb->get_results( $sql ); if ( !empty( $result ) ) $count = intval( $result[0]->cnt ); // unset to save memory unset( $results ); return $count; } /** * Set array with imported comments from WordPress database * * @param string $bid * @return array */ function get_imported_comments( $bid ) { global $wpdb; $hashtable = array(); $limit = 100; $offset = 0; // Grab all comments in chunks do { $sql = $wpdb->prepare( "SELECT comment_ID, comment_agent FROM $wpdb->comments LIMIT %d,%d", $offset, $limit ); $results = $wpdb->get_results( $sql ); // Increment offset $offset = ( $limit + $offset ); if ( !empty( $results ) ) { foreach ( $results as $r ) { // Explode comment_agent key list ( $ca_bid, $source_comment_id ) = explode( '-', $r->comment_agent ); $source_comment_id = intval( $source_comment_id ); // Check if this comment came from this blog if ( $bid == $ca_bid ) { $hashtable[$source_comment_id] = intval( $r->comment_ID ); } } } } while ( count( $results ) == $limit ); // unset to save memory unset( $results, $r ); return $hashtable; } function set_blog( $blog_id ) { if ( is_numeric( $blog_id ) ) { $blog_id = (int) $blog_id; } else { $blog = 'http://' . preg_replace( '#^https?://#', '', $blog_id ); if ( ( !$parsed = parse_url( $blog ) ) || empty( $parsed['host'] ) ) { fwrite( STDERR, "Error: can not determine blog_id from $blog_id\n" ); exit(); } if ( empty( $parsed['path'] ) ) $parsed['path'] = '/'; $blog = get_blog_details( array( 'domain' => $parsed['host'], 'path' => $parsed['path'] ) ); if ( !$blog ) { fwrite( STDERR, "Error: Could not find blog\n" ); exit(); } $blog_id = (int) $blog->blog_id; // Restore global $current_blog global $current_blog; $current_blog = $blog; } if ( function_exists( 'is_multisite' ) ) { if ( is_multisite() ) switch_to_blog( $blog_id ); } return $blog_id; } function set_user( $user_id ) { if ( is_numeric( $user_id ) ) { $user_id = (int) $user_id; } else { $user_id = (int) username_exists( $user_id ); } if ( !$user_id || !wp_set_current_user( $user_id ) ) { fwrite( STDERR, "Error: can not find user\n" ); exit(); } return $user_id; } /** * Sort by strlen, longest string first * * @param string $a * @param string $b * @return int */ function cmpr_strlen( $a, $b ) { return strlen( $b ) - strlen( $a ); } /** * GET URL * * @param string $url * @param string $username * @param string $password * @param bool $head * @return array */ function get_page( $url, $username = '', $password = '', $head = false ) { // Increase the timeout add_filter( 'http_request_timeout', array( &$this, 'bump_request_timeout' ) ); $headers = array(); $args = array(); if ( true === $head ) $args['method'] = 'HEAD'; if ( !empty( $username ) && !empty( $password ) ) $headers['Authorization'] = 'Basic ' . base64_encode( "$username:$password" ); $args['headers'] = $headers; return wp_remote_request( $url, $args ); } /** * Bump up the request timeout for http requests * * @param int $val * @return int */ function bump_request_timeout( $val ) { return 60; } /** * Check if user has exceeded disk quota * * @return bool */ function is_user_over_quota() { global $current_blog; if ( function_exists( 'upload_is_user_over_quota' ) ) { if ( upload_is_user_over_quota( 1 ) ) { echo "Sorry, you have used your upload quota.\n"; return true; } } return false; } /** * Replace newlines, tabs, and multiple spaces with a single space * * @param string $string * @return string */ function min_whitespace( $string ) { return preg_replace( '|[\r\n\t ]+|', ' ', $string ); } /** * Reset global variables that grow out of control during imports * * @return void */ function stop_the_insanity() { global $wpdb, $wp_actions; // Or define( 'WP_IMPORTING', true ); $wpdb->queries = array(); // Reset $wp_actions to keep it from growing out of control $wp_actions = array(); } } /** * Returns value of command line params. * Exits when a required param is not set. * * @param string $param * @param bool $required * @return mixed */ function get_cli_args( $param, $required = false ) { $args = $_SERVER['argv']; $out = array(); $last_arg = null; $return = null; $il = sizeof( $args ); for ( $i = 1, $il; $i < $il; $i++ ) { if ( (bool) preg_match( "/^--(.+)/", $args[$i], $match ) ) { $parts = explode( "=", $match[1] ); $key = preg_replace( "/[^a-z0-9]+/", "", $parts[0] ); if ( isset( $parts[1] ) ) { $out[$key] = $parts[1]; } else { $out[$key] = true; } $last_arg = $key; } else if ( (bool) preg_match( "/^-([a-zA-Z0-9]+)/", $args[$i], $match ) ) { for ( $j = 0, $jl = strlen( $match[1] ); $j < $jl; $j++ ) { $key = $match[1]{$j}; $out[$key] = true; } $last_arg = $key; } else if ( $last_arg !== null ) { $out[$last_arg] = $args[$i]; } } // Check array for specified param if ( isset( $out[$param] ) ) { // Set return value $return = $out[$param]; } // Check for missing required param if ( !isset( $out[$param] ) && $required ) { // Display message and exit echo "\"$param\" parameter is required but was not specified\n"; exit(); } return $return; } wp-admin/includes/class-wp-links-list-table.php0000644002347300047320000001247711656660344021372 0ustar vonfabpsacln 'bookmarks', ) ); } function ajax_user_can() { return current_user_can( 'manage_links' ); } function prepare_items() { global $cat_id, $s, $orderby, $order; wp_reset_vars( array( 'action', 'cat_id', 'linkurl', 'name', 'image', 'description', 'visible', 'target', 'category', 'link_id', 'submit', 'orderby', 'order', 'links_show_cat_id', 'rating', 'rel', 'notes', 'linkcheck[]', 's' ) ); $args = array( 'hide_invisible' => 0, 'hide_empty' => 0 ); if ( 'all' != $cat_id ) $args['category'] = $cat_id; if ( !empty( $s ) ) $args['search'] = $s; if ( !empty( $orderby ) ) $args['orderby'] = $orderby; if ( !empty( $order ) ) $args['order'] = $order; $this->items = get_bookmarks( $args ); } function no_items() { _e( 'No links found.' ); } function get_bulk_actions() { $actions = array(); $actions['delete'] = __( 'Delete' ); return $actions; } function extra_tablenav( $which ) { global $cat_id; if ( 'top' != $which ) return; ?>
$cat_id, 'name' => 'cat_id', 'taxonomy' => 'link_category', 'show_option_all' => __( 'View all categories' ), 'hide_empty' => true, 'hierarchical' => 1, 'show_count' => 0, 'orderby' => 'name', ); wp_dropdown_categories( $dropdown_options ); submit_button( __( 'Filter' ), 'secondary', false, false, array( 'id' => 'post-query-submit' ) ); ?>
'', 'name' => __( 'Name' ), 'url' => __( 'URL' ), 'categories' => __( 'Categories' ), 'rel' => __( 'Relationship' ), 'visible' => __( 'Visible' ), 'rating' => __( 'Rating' ) ); } function get_sortable_columns() { return array( 'name' => 'name', 'url' => 'url', 'visible' => 'visible', 'rating' => 'rating' ); } function display_rows() { global $cat_id; $alt = 0; foreach ( $this->items as $link ) { $link = sanitize_bookmark( $link ); $link->link_name = esc_attr( $link->link_name ); $link->link_category = wp_get_link_cats( $link->link_id ); $short_url = url_shorten( $link->link_url ); $visible = ( $link->link_visible == 'Y' ) ? __( 'Yes' ) : __( 'No' ); $rating = $link->link_rating; $style = ( $alt++ % 2 ) ? '' : ' class="alternate"'; $edit_link = get_edit_bookmark_link( $link ); ?> > get_column_info(); foreach ( $columns as $column_name => $column_display_name ) { $class = "class='column-$column_name'"; $style = ''; if ( in_array( $column_name, $hidden ) ) $style = ' style="display:none;"'; $attributes = $class . $style; switch ( $column_name ) { case 'cb': echo ''; break; case 'name': echo "link_name ) ) . "'>$link->link_name
"; $actions = array(); $actions['edit'] = '' . __( 'Edit' ) . ''; $actions['delete'] = "link_id ) . "' onclick=\"if ( confirm( '" . esc_js( sprintf( __( "You are about to delete this link '%s'\n 'Cancel' to stop, 'OK' to delete." ), $link->link_name ) ) . "' ) ) { return true;}return false;\">" . __( 'Delete' ) . ""; echo $this->row_actions( $actions ); echo ''; break; case 'url': echo "link_name ) )."'>$short_url"; break; case 'categories': ?>>link_category as $category ) { $cat = get_term( $category, 'link_category', OBJECT, 'display' ); if ( is_wp_error( $cat ) ) echo $cat->get_error_message(); $cat_name = $cat->name; if ( $cat_id != $category ) $cat_name = "$cat_name"; $cat_names[] = $cat_name; } echo implode( ', ', $cat_names ); ?>>link_rel ) ? '
' : $link->link_rel; ?>>> >link_id ); ?> wp-admin/includes/class-wp-list-table.php0000644002347300047320000005163111656660345020250 0ustar vonfabpsacln '', 'singular' => '', 'ajax' => false ) ); $screen = get_current_screen(); add_filter( "manage_{$screen->id}_columns", array( &$this, 'get_columns' ), 0 ); if ( !$args['plural'] ) $args['plural'] = $screen->base; $this->_args = $args; if ( $args['ajax'] ) { // wp_enqueue_script( 'list-table' ); add_action( 'admin_footer', array( &$this, '_js_vars' ) ); } } /** * Checks the current user's permissions * @uses wp_die() * * @since 3.1.0 * @access public * @abstract */ function ajax_user_can() { die( 'function WP_List_Table::ajax_user_can() must be over-ridden in a sub-class.' ); } /** * Prepares the list of items for displaying. * @uses WP_List_Table::set_pagination_args() * * @since 3.1.0 * @access public * @abstract */ function prepare_items() { die( 'function WP_List_Table::prepare_items() must be over-ridden in a sub-class.' ); } /** * An internal method that sets all the necessary pagination arguments * * @param array $args An associative array with information about the pagination * @access protected */ function set_pagination_args( $args ) { $args = wp_parse_args( $args, array( 'total_items' => 0, 'total_pages' => 0, 'per_page' => 0, ) ); if ( !$args['total_pages'] && $args['per_page'] > 0 ) $args['total_pages'] = ceil( $args['total_items'] / $args['per_page'] ); $this->_pagination_args = $args; } /** * Access the pagination args * * @since 3.1.0 * @access public * * @param string $key * @return array */ function get_pagination_arg( $key ) { if ( 'page' == $key ) return $this->get_pagenum(); if ( isset( $this->_pagination_args[$key] ) ) return $this->_pagination_args[$key]; } /** * Whether the table has items to display or not * * @since 3.1.0 * @access public * * @return bool */ function has_items() { return !empty( $this->items ); } /** * Message to be displayed when there are no items * * @since 3.1.0 * @access public */ function no_items() { _e( 'No items found.' ); } /** * Display the search box. * * @since 3.1.0 * @access public * * @param string $text The search button text * @param string $input_id The search input id */ function search_box( $text, $input_id ) { if ( empty( $_REQUEST['s'] ) && !$this->has_items() ) return; $input_id = $input_id . '-search-input'; if ( ! empty( $_REQUEST['orderby'] ) ) echo ''; if ( ! empty( $_REQUEST['order'] ) ) echo ''; ?> link ) with the list * of views available on this table. * * @since 3.1.0 * @access protected * * @return array */ function get_views() { return array(); } /** * Display the bulk actions dropdown. * * @since 3.1.0 * @access public */ function views() { $screen = get_current_screen(); $views = $this->get_views(); $views = apply_filters( 'views_' . $screen->id, $views ); if ( empty( $views ) ) return; echo "
    \n"; foreach ( $views as $class => $view ) { $views[ $class ] = "\t
  • $view"; } echo implode( " |
  • \n", $views ) . "\n"; echo "
"; } /** * Get an associative array ( option_name => option_title ) with the list * of bulk actions available on this table. * * @since 3.1.0 * @access protected * * @return array */ function get_bulk_actions() { return array(); } /** * Display the bulk actions dropdown. * * @since 3.1.0 * @access public */ function bulk_actions() { $screen = get_current_screen(); if ( is_null( $this->_actions ) ) { $no_new_actions = $this->_actions = $this->get_bulk_actions(); // This filter can currently only be used to remove actions. $this->_actions = apply_filters( 'bulk_actions-' . $screen->id, $this->_actions ); $this->_actions = array_intersect_assoc( $this->_actions, $no_new_actions ); $two = ''; } else { $two = '2'; } if ( empty( $this->_actions ) ) return; echo "\n"; submit_button( __( 'Apply' ), 'button-secondary action', false, false, array( 'id' => "doaction$two" ) ); echo "\n"; } /** * Get the current action selected from the bulk actions dropdown. * * @since 3.1.0 * @access public * * @return string|bool The action name or False if no action was selected */ function current_action() { if ( isset( $_REQUEST['action'] ) && -1 != $_REQUEST['action'] ) return $_REQUEST['action']; if ( isset( $_REQUEST['action2'] ) && -1 != $_REQUEST['action2'] ) return $_REQUEST['action2']; return false; } /** * Generate row actions div * * @since 3.1.0 * @access protected * * @param array $actions The list of actions * @param bool $always_visible Wether the actions should be always visible * @return string */ function row_actions( $actions, $always_visible = false ) { $action_count = count( $actions ); $i = 0; if ( !$action_count ) return ''; $out = '
'; foreach ( $actions as $action => $link ) { ++$i; ( $i == $action_count ) ? $sep = '' : $sep = ' | '; $out .= "$link$sep"; } $out .= '
'; return $out; } /** * Display a monthly dropdown for filtering items * * @since 3.1.0 * @access protected */ function months_dropdown( $post_type ) { global $wpdb, $wp_locale; $months = $wpdb->get_results( $wpdb->prepare( " SELECT DISTINCT YEAR( post_date ) AS year, MONTH( post_date ) AS month FROM $wpdb->posts WHERE post_type = %s ORDER BY post_date DESC ", $post_type ) ); $month_count = count( $months ); if ( !$month_count || ( 1 == $month_count && 0 == $months[0]->month ) ) return; $m = isset( $_GET['m'] ) ? (int) $_GET['m'] : 0; ?> __( 'List View' ), 'excerpt' => __( 'Excerpt View' ) ); ?>
$title ) { $class = ( $current_mode == $mode ) ? 'class="current"' : ''; echo "$title\n"; } ?>
'; echo "" . number_format_i18n( get_comments_number() ) . ""; if ( $pending_comments ) echo ''; } /** * Get the current page number * * @since 3.1.0 * @access protected * * @return int */ function get_pagenum() { $pagenum = isset( $_REQUEST['paged'] ) ? absint( $_REQUEST['paged'] ) : 0; if( isset( $this->_pagination_args['total_pages'] ) && $pagenum > $this->_pagination_args['total_pages'] ) $pagenum = $this->_pagination_args['total_pages']; return max( 1, $pagenum ); } /** * Get number of items to display on a single page * * @since 3.1.0 * @access protected * * @return int */ function get_items_per_page( $option, $default = 20 ) { $per_page = (int) get_user_option( $option ); if ( empty( $per_page ) || $per_page < 1 ) $per_page = $default; return (int) apply_filters( $option, $per_page ); } /** * Display the pagination. * * @since 3.1.0 * @access protected */ function pagination( $which ) { if ( empty( $this->_pagination_args ) ) return; extract( $this->_pagination_args ); $output = '' . sprintf( _n( '1 item', '%s items', $total_items ), number_format_i18n( $total_items ) ) . ''; $current = $this->get_pagenum(); $current_url = ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; $current_url = remove_query_arg( array( 'hotkeys_highlight_last', 'hotkeys_highlight_first' ), $current_url ); $page_links = array(); $disable_first = $disable_last = ''; if ( $current == 1 ) $disable_first = ' disabled'; if ( $current == $total_pages ) $disable_last = ' disabled'; $page_links[] = sprintf( "%s", 'first-page' . $disable_first, esc_attr__( 'Go to the first page' ), esc_url( remove_query_arg( 'paged', $current_url ) ), '«' ); $page_links[] = sprintf( "%s", 'prev-page' . $disable_first, esc_attr__( 'Go to the previous page' ), esc_url( add_query_arg( 'paged', max( 1, $current-1 ), $current_url ) ), '‹' ); if ( 'bottom' == $which ) $html_current_page = $current; else $html_current_page = sprintf( "", esc_attr__( 'Current page' ), esc_attr( 'paged' ), $current, strlen( $total_pages ) ); $html_total_pages = sprintf( "%s", number_format_i18n( $total_pages ) ); $page_links[] = '' . sprintf( _x( '%1$s of %2$s', 'paging' ), $html_current_page, $html_total_pages ) . ''; $page_links[] = sprintf( "%s", 'next-page' . $disable_last, esc_attr__( 'Go to the next page' ), esc_url( add_query_arg( 'paged', min( $total_pages, $current+1 ), $current_url ) ), '›' ); $page_links[] = sprintf( "%s", 'last-page' . $disable_last, esc_attr__( 'Go to the last page' ), esc_url( add_query_arg( 'paged', $total_pages, $current_url ) ), '»' ); $output .= "\n" . join( "\n", $page_links ); $page_class = $total_pages < 2 ? ' one-page' : ''; $this->_pagination = "
$output
"; echo $this->_pagination; } /** * Get a list of columns. The format is: * 'internal-name' => 'Title' * * @since 3.1.0 * @access protected * @abstract * * @return array */ function get_columns() { die( 'function WP_List_Table::get_columns() must be over-ridden in a sub-class.' ); } /** * Get a list of sortable columns. The format is: * 'internal-name' => 'orderby' * or * 'internal-name' => array( 'orderby', true ) * * The second format will make the initial sorting order be descending * * @since 3.1.0 * @access protected * * @return array */ function get_sortable_columns() { return array(); } /** * Get a list of all, hidden and sortable columns, with filter applied * * @since 3.1.0 * @access protected * * @return array */ function get_column_info() { if ( isset( $this->_column_headers ) ) return $this->_column_headers; $screen = get_current_screen(); $columns = get_column_headers( $screen ); $hidden = get_hidden_columns( $screen ); $_sortable = apply_filters( "manage_{$screen->id}_sortable_columns", $this->get_sortable_columns() ); $sortable = array(); foreach ( $_sortable as $id => $data ) { if ( empty( $data ) ) continue; $data = (array) $data; if ( !isset( $data[1] ) ) $data[1] = false; $sortable[$id] = $data; } $this->_column_headers = array( $columns, $hidden, $sortable ); return $this->_column_headers; } /** * Return number of visible columns * * @since 3.1.0 * @access public * * @return int */ function get_column_count() { list ( $columns, $hidden ) = $this->get_column_info(); $hidden = array_intersect( array_keys( $columns ), array_filter( $hidden ) ); return count( $columns ) - count( $hidden ); } /** * Print column headers, accounting for hidden and sortable columns. * * @since 3.1.0 * @access protected * * @param bool $with_id Whether to set the id attribute or not */ function print_column_headers( $with_id = true ) { $screen = get_current_screen(); list( $columns, $hidden, $sortable ) = $this->get_column_info(); $current_url = ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; $current_url = remove_query_arg( 'paged', $current_url ); if ( isset( $_GET['orderby'] ) ) $current_orderby = $_GET['orderby']; else $current_orderby = ''; if ( isset( $_GET['order'] ) && 'desc' == $_GET['order'] ) $current_order = 'desc'; else $current_order = 'asc'; foreach ( $columns as $column_key => $column_display_name ) { $class = array( 'manage-column', "column-$column_key" ); $style = ''; if ( in_array( $column_key, $hidden ) ) $style = 'display:none;'; $style = ' style="' . $style . '"'; if ( 'cb' == $column_key ) $class[] = 'check-column'; elseif ( in_array( $column_key, array( 'posts', 'comments', 'links' ) ) ) $class[] = 'num'; if ( isset( $sortable[$column_key] ) ) { list( $orderby, $desc_first ) = $sortable[$column_key]; if ( $current_orderby == $orderby ) { $order = 'asc' == $current_order ? 'desc' : 'asc'; $class[] = 'sorted'; $class[] = $current_order; } else { $order = $desc_first ? 'desc' : 'asc'; $class[] = 'sortable'; $class[] = $desc_first ? 'asc' : 'desc'; } $column_display_name = '' . $column_display_name . ''; } $id = $with_id ? "id='$column_key'" : ''; if ( !empty( $class ) ) $class = "class='" . join( ' ', $class ) . "'"; echo "$column_display_name"; } } /** * Display the table * * @since 3.1.0 * @access public */ function display() { extract( $this->_args ); $this->display_tablenav( 'top' ); ?> print_column_headers(); ?> print_column_headers( false ); ?> > display_rows_or_placeholder(); ?>
display_tablenav( 'bottom' ); } /** * Get a list of CSS classes for the tag * * @since 3.1.0 * @access protected * * @return array */ function get_table_classes() { return array( 'widefat', 'fixed', $this->_args['plural'] ); } /** * Generate the table navigation above or below the table * * @since 3.1.0 * @access protected */ function display_tablenav( $which ) { if ( 'top' == $which ) wp_nonce_field( 'bulk-' . $this->_args['plural'] ); ?>
bulk_actions( $which ); ?>
extra_tablenav( $which ); $this->pagination( $which ); ?>
part of the table * * @since 3.1.0 * @access protected */ function display_rows_or_placeholder() { if ( $this->has_items() ) { $this->display_rows(); } else { list( $columns, $hidden ) = $this->get_column_info(); echo ''; } } /** * Generate the table rows * * @since 3.1.0 * @access protected */ function display_rows() { foreach ( $this->items as $item ) $this->single_row( $item ); } /** * Generates content for a single row of the table * * @since 3.1.0 * @access protected * * @param object $item The current item */ function single_row( $item ) { static $row_class = ''; $row_class = ( $row_class == '' ? ' class="alternate"' : '' ); echo ''; echo $this->single_row_columns( $item ); echo ''; } /** * Generates the columns for a single row of the table * * @since 3.1.0 * @access protected * * @param object $item The current item */ function single_row_columns( $item ) { list( $columns, $hidden ) = $this->get_column_info(); foreach ( $columns as $column_name => $column_display_name ) { $class = "class='$column_name column-$column_name'"; $style = ''; if ( in_array( $column_name, $hidden ) ) $style = ' style="display:none;"'; $attributes = "$class$style"; if ( 'cb' == $column_name ) { echo ''; } elseif ( method_exists( $this, 'column_' . $column_name ) ) { echo ""; } else { echo ""; } } } /** * Handle an incoming ajax request (called from admin-ajax.php) * * @since 3.1.0 * @access public */ function ajax_response() { $this->prepare_items(); extract( $this->_args ); extract( $this->_pagination_args ); ob_start(); if ( ! empty( $_REQUEST['no_placeholder'] ) ) $this->display_rows(); else $this->display_rows_or_placeholder(); $rows = ob_get_clean(); $response = array( 'rows' => $rows ); if ( isset( $total_items ) ) $response['total_items_i18n'] = sprintf( _n( '1 item', '%s items', $total_items ), number_format_i18n( $total_items ) ); if ( isset( $total_pages ) ) { $response['total_pages'] = $total_pages; $response['total_pages_i18n'] = number_format_i18n( $total_pages ); } die( json_encode( $response ) ); } /** * Send required variables to JavaScript land * * @access private */ function _js_vars() { $args = array( 'class' => get_class( $this ), 'screen' => get_current_screen() ); printf( "\n", json_encode( $args ) ); } } ?> wp-admin/includes/class-wp-media-list-table.php0000644002347300047320000003167011656660345021326 0ustar vonfabpsaclndetached = isset( $_REQUEST['detached'] ) || isset( $_REQUEST['find_detached'] ); parent::WP_List_Table( array( 'plural' => 'media' ) ); } function ajax_user_can() { return current_user_can('upload_files'); } function prepare_items() { global $lost, $wpdb, $wp_query, $post_mime_types, $avail_post_mime_types; $q = $_REQUEST; if ( !empty( $lost ) ) $q['post__in'] = implode( ',', $lost ); list( $post_mime_types, $avail_post_mime_types ) = wp_edit_attachments_query( $q ); $this->is_trash = isset( $_REQUEST['status'] ) && 'trash' == $_REQUEST['status']; $this->set_pagination_args( array( 'total_items' => $wp_query->found_posts, 'total_pages' => $wp_query->max_num_pages, 'per_page' => $wp_query->query_vars['posts_per_page'], ) ); } function get_views() { global $wpdb, $post_mime_types, $avail_post_mime_types; $type_links = array(); $_num_posts = (array) wp_count_attachments(); $_total_posts = array_sum($_num_posts) - $_num_posts['trash']; if ( !isset( $total_orphans ) ) $total_orphans = $wpdb->get_var( "SELECT COUNT( * ) FROM $wpdb->posts WHERE post_type = 'attachment' AND post_status != 'trash' AND post_parent < 1" ); $matches = wp_match_mime_types(array_keys($post_mime_types), array_keys($_num_posts)); foreach ( $matches as $type => $reals ) foreach ( $reals as $real ) $num_posts[$type] = ( isset( $num_posts[$type] ) ) ? $num_posts[$type] + $_num_posts[$real] : $_num_posts[$real]; $class = ( empty($_GET['post_mime_type']) && !$this->detached && !isset($_GET['status']) ) ? ' class="current"' : ''; $type_links['all'] = "" . sprintf( _nx( 'All (%s)', 'All (%s)', $_total_posts, 'uploaded files' ), number_format_i18n( $_total_posts ) ) . ''; foreach ( $post_mime_types as $mime_type => $label ) { $class = ''; if ( !wp_match_mime_types($mime_type, $avail_post_mime_types) ) continue; if ( !empty($_GET['post_mime_type']) && wp_match_mime_types($mime_type, $_GET['post_mime_type']) ) $class = ' class="current"'; if ( !empty( $num_posts[$mime_type] ) ) $type_links[$mime_type] = "" . sprintf( translate_nooped_plural( $label[2], $num_posts[$mime_type] ), number_format_i18n( $num_posts[$mime_type] )) . ''; } $type_links['detached'] = 'detached ? ' class="current"' : '' ) . '>' . sprintf( _nx( 'Unattached (%s)', 'Unattached (%s)', $total_orphans, 'detached files' ), number_format_i18n( $total_orphans ) ) . ''; if ( !empty($_num_posts['trash']) ) $type_links['trash'] = '' . sprintf( _nx( 'Trash (%s)', 'Trash (%s)', $_num_posts['trash'], 'uploaded files' ), number_format_i18n( $_num_posts['trash'] ) ) . ''; return $type_links; } function get_bulk_actions() { $actions = array(); $actions['delete'] = __( 'Delete Permanently' ); if ( $this->detached ) $actions['attach'] = __( 'Attach to a post' ); return $actions; } function extra_tablenav( $which ) { global $post_type; $post_type_obj = get_post_type_object( $post_type ); ?>
detached && !$this->is_trash ) { $this->months_dropdown( $post_type ); do_action( 'restrict_manage_posts' ); submit_button( __( 'Filter' ), 'secondary', false, false, array( 'id' => 'post-query-submit' ) ); } if ( $this->detached ) { submit_button( __( 'Scan for lost attachments' ), 'secondary', 'find_detached', false ); } elseif ( $this->is_trash && current_user_can( 'edit_others_posts' ) ) { submit_button( __( 'Empty Trash' ), 'button-secondary apply', 'delete_all', false ); } ?>
'; $posts_columns['icon'] = ''; /* translators: column name */ $posts_columns['title'] = _x( 'File', 'column name' ); $posts_columns['author'] = __( 'Author' ); //$posts_columns['tags'] = _x( 'Tags', 'column name' ); /* translators: column name */ if ( !$this->detached ) { $posts_columns['parent'] = _x( 'Attached to', 'column name' ); $posts_columns['comments'] = '
Comments
'; } /* translators: column name */ $posts_columns['date'] = _x( 'Date', 'column name' ); $posts_columns = apply_filters( 'manage_media_columns', $posts_columns, $this->detached ); return $posts_columns; } function get_sortable_columns() { return array( 'title' => 'title', 'author' => 'author', 'parent' => 'parent', 'comments' => 'comment_count', 'date' => array( 'date', true ), ); } function display_rows() { global $post, $id; add_filter( 'the_title','esc_html' ); $alt = ''; while ( have_posts() ) : the_post(); if ( $this->is_trash && $post->post_status != 'trash' || !$this->is_trash && $post->post_status == 'trash' ) continue; $alt = ( 'alternate' == $alt ) ? '' : 'alternate'; $post_owner = ( get_current_user_id() == $post->post_author ) ? 'self' : 'other'; $att_title = _draft_or_post_title(); ?> post_status ); ?>' valign="top"> get_column_info(); foreach ( $columns as $column_name => $column_display_name ) { $class = "class='$column_name column-$column_name'"; $style = ''; if ( in_array( $column_name, $hidden ) ) $style = ' style="display:none;"'; $attributes = $class . $style; switch ( $column_name ) { case 'cb': ?> post_date && 'date' == $column_name ) { $t_time = $h_time = __( 'Unpublished' ); } else { $t_time = get_the_time( __( 'Y/m/d g:i:s A' ) ); $m_time = $post->post_date; $time = get_post_time( 'G', true, $post, false ); if ( ( abs( $t_diff = time() - $time ) ) < 86400 ) { if ( $t_diff < 0 ) $h_time = sprintf( __( '%s from now' ), human_time_diff( $time ) ); else $h_time = sprintf( __( '%s ago' ), human_time_diff( $time ) ); } else { $h_time = mysql2date( __( 'Y/m/d' ), $m_time ); } } ?> post_parent > 0 ) { if ( get_post( $post->post_parent ) ) { $title =_draft_or_post_title( $post->post_parent ); } ?> detached ) { if ( current_user_can( 'edit_post', $post->ID ) ) $actions['edit'] = '' . __( 'Edit' ) . ''; if ( current_user_can( 'delete_post', $post->ID ) ) if ( EMPTY_TRASH_DAYS && MEDIA_TRASH ) { $actions['trash'] = "ID ) . "'>" . __( 'Trash' ) . ""; } else { $delete_ays = !MEDIA_TRASH ? " onclick='return showNotice.warn();'" : ''; $actions['delete'] = "ID ) . "'>" . __( 'Delete Permanently' ) . ""; } $actions['view'] = '' . __( 'View' ) . ''; if ( current_user_can( 'edit_post', $post->ID ) ) $actions['attach'] = ''.__( 'Attach' ).''; } else { if ( current_user_can( 'edit_post', $post->ID ) && !$this->is_trash ) $actions['edit'] = '' . __( 'Edit' ) . ''; if ( current_user_can( 'delete_post', $post->ID ) ) { if ( $this->is_trash ) $actions['untrash'] = "ID ) . "'>" . __( 'Restore' ) . ""; elseif ( EMPTY_TRASH_DAYS && MEDIA_TRASH ) $actions['trash'] = "ID ) . "'>" . __( 'Trash' ) . ""; if ( $this->is_trash || !EMPTY_TRASH_DAYS || !MEDIA_TRASH ) { $delete_ays = ( !$this->is_trash && !MEDIA_TRASH ) ? " onclick='return showNotice.warn();'" : ''; $actions['delete'] = "ID ) . "'>" . __( 'Delete Permanently' ) . ""; } } if ( !$this->is_trash ) { $title =_draft_or_post_title( $post->post_parent ); $actions['view'] = '' . __( 'View' ) . ''; } } $actions = apply_filters( 'media_row_actions', $actions, $post, $this->detached ); return $actions; } } ?> wp-admin/includes/class-wp-ms-sites-list-table.php0000644002347300047320000003124011656660345022004 0ustar vonfabpsacln 'sites', ) ); } function ajax_user_can() { return current_user_can( 'manage_sites' ); } function prepare_items() { global $s, $mode, $wpdb, $current_site; $mode = ( empty( $_REQUEST['mode'] ) ) ? 'list' : $_REQUEST['mode']; $per_page = $this->get_items_per_page( 'sites_network_per_page' ); $pagenum = $this->get_pagenum(); $s = isset( $_REQUEST['s'] ) ? stripslashes( trim( $_REQUEST[ 's' ] ) ) : ''; $wild = ''; if ( false !== strpos($s, '*') ) { $wild = '%'; $s = trim($s, '*'); } $like_s = esc_sql( like_escape( $s ) ); $large_network = false; // If the network is large and a search is not being performed, show only the latest blogs with no paging in order // to avoid expensive count queries. if ( !$s && ( get_blog_count() >= 10000 ) ) { if ( !isset($_REQUEST['orderby']) ) $_GET['orderby'] = $_REQUEST['orderby'] = ''; if ( !isset($_REQUEST['order']) ) $_GET['order'] = $_REQUEST['order'] = 'DESC'; $large_network = true; } $query = "SELECT * FROM {$wpdb->blogs} WHERE site_id = '{$wpdb->siteid}' "; if ( empty($s) ) { // Nothing to do. } elseif ( preg_match('/^[0-9]+\./', $s) ) { // IP address $reg_blog_ids = $wpdb->get_col( "SELECT blog_id FROM {$wpdb->registration_log} WHERE {$wpdb->registration_log}.IP LIKE ( '{$like_s}$wild' )" ); if ( !$reg_blog_ids ) $reg_blog_ids = array( 0 ); $query = "SELECT * FROM {$wpdb->blogs} WHERE site_id = '{$wpdb->siteid}' AND {$wpdb->blogs}.blog_id IN (" . implode( ', ', $reg_blog_ids ) . ")"; } else { if ( is_numeric($s) ) { $query .= " AND ( {$wpdb->blogs}.blog_id = '{$like_s}' )"; } elseif ( is_subdomain_install() ) { $blog_s = str_replace( '.' . $current_site->domain, '', $like_s ); $blog_s .= $wild . '.' . $current_site->domain; $query .= " AND ( {$wpdb->blogs}.domain LIKE '$blog_s' ) "; } else { if ( $like_s != trim('/', $current_site->path) ) $blog_s = $current_site->path . $like_s . $wild . '/'; else $blog_s = $like_s; $query .= " AND ( {$wpdb->blogs}.path LIKE '$blog_s' )"; } } $order_by = isset( $_REQUEST['orderby'] ) ? $_REQUEST['orderby'] : ''; if ( $order_by == 'registered' ) { $query .= ' ORDER BY registered '; } elseif ( $order_by == 'lastupdated' ) { $query .= ' ORDER BY last_updated '; } elseif ( $order_by == 'blogname' ) { if ( is_subdomain_install() ) $query .= ' ORDER BY domain '; else $query .= ' ORDER BY path '; } elseif ( $order_by == 'blog_id' ) { $query .= ' ORDER BY blog_id '; } else { $order_by = null; } if ( isset( $order_by ) ) { $order = ( isset( $_REQUEST['order'] ) && 'DESC' == strtoupper( $_REQUEST['order'] ) ) ? "DESC" : "ASC"; $query .= $order; } // Don't do an unbounded count on large networks if ( ! $large_network ) $total = $wpdb->get_var( str_replace( 'SELECT *', 'SELECT COUNT( blog_id )', $query ) ); $query .= " LIMIT " . intval( ( $pagenum - 1 ) * $per_page ) . ", " . intval( $per_page ); $this->items = $wpdb->get_results( $query, ARRAY_A ); if ( $large_network ) $total = count($this->items); $this->set_pagination_args( array( 'total_items' => $total, 'per_page' => $per_page, ) ); } function no_items() { _e( 'No sites found.' ); } function get_bulk_actions() { $actions = array(); if ( current_user_can( 'delete_sites' ) ) $actions['delete'] = __( 'Delete' ); $actions['spam'] = _x( 'Mark as Spam', 'site' ); $actions['notspam'] = _x( 'Not Spam', 'site' ); return $actions; } function pagination( $which ) { global $mode; parent::pagination( $which ); if ( 'top' == $which ) $this->view_switcher( $mode ); } function get_columns() { $blogname_columns = ( is_subdomain_install() ) ? __( 'Domain' ) : __( 'Path' ); $sites_columns = array( 'cb' => '', 'blogname' => $blogname_columns, 'lastupdated' => __( 'Last Updated' ), 'registered' => _x( 'Registered', 'site' ), 'users' => __( 'Users' ) ); if ( has_filter( 'wpmublogsaction' ) ) $sites_columns['plugins'] = __( 'Actions' ); $sites_columns = apply_filters( 'wpmu_blogs_columns', $sites_columns ); return $sites_columns; } function get_sortable_columns() { return array( 'blogname' => 'blogname', 'lastupdated' => 'lastupdated', 'registered' => 'blog_id', ); } function display_rows() { global $current_site, $mode; $status_list = array( 'archived' => array( 'site-archived', __( 'Archived' ) ), 'spam' => array( 'site-spammed', _x( 'Spam', 'site' ) ), 'deleted' => array( 'site-deleted', __( 'Deleted' ) ), 'mature' => array( 'site-mature', __( 'Mature' ) ) ); $class = ''; foreach ( $this->items as $blog ) { $class = ( 'alternate' == $class ) ? '' : 'alternate'; reset( $status_list ); $blog_states = array(); foreach ( $status_list as $status => $col ) { if ( get_blog_status( $blog['blog_id'], $status ) == 1 ) { $class = $col[0]; $blog_states[] = $col[1]; } } $blog_state = ''; if ( ! empty( $blog_states ) ) { $state_count = count( $blog_states ); $i = 0; $blog_state .= ' - '; foreach ( $blog_states as $state ) { ++$i; ( $i == $state_count ) ? $sep = '' : $sep = ', '; $blog_state .= "$state$sep"; } } echo ""; $blogname = ( is_subdomain_install() ) ? str_replace( '.'.$current_site->domain, '', $blog['domain'] ) : $blog['path']; list( $columns, $hidden ) = $this->get_column_info(); foreach ( $columns as $column_name => $column_display_name ) { $style = ''; if ( in_array( $column_name, $hidden ) ) $style = ' style="display:none;"'; switch ( $column_name ) { case 'cb': ?> "; ?> ' . sprintf( _x( '%1$s – %2$s', '%1$s: site name. %2$s: site tagline.' ), get_blog_option( $blog['blog_id'], 'blogname' ), get_blog_option( $blog['blog_id'], 'blogdescription ' ) ) . '

'; // Preordered. $actions = array( 'edit' => '', 'backend' => '', 'activate' => '', 'deactivate' => '', 'archive' => '', 'unarchive' => '', 'spam' => '', 'unspam' => '', 'delete' => '', 'visit' => '', ); $actions['edit'] = '' . __( 'Edit' ) . ''; $actions['backend'] = "" . __( 'Dashboard' ) . ''; if ( $current_site->blog_id != $blog['blog_id'] ) { if ( get_blog_status( $blog['blog_id'], 'deleted' ) == '1' ) $actions['activate'] = '' . __( 'Activate' ) . ''; else $actions['deactivate'] = '' . __( 'Deactivate' ) . ''; if ( get_blog_status( $blog['blog_id'], 'archived' ) == '1' ) $actions['unarchive'] = '' . __( 'Unarchive' ) . ''; else $actions['archive'] = '' . _x( 'Archive', 'verb; site' ) . ''; if ( get_blog_status( $blog['blog_id'], 'spam' ) == '1' ) $actions['unspam'] = '' . _x( 'Not Spam', 'site' ) . ''; else $actions['spam'] = '' . _x( 'Spam', 'site' ) . ''; if ( current_user_can( 'delete_site', $blog['blog_id'] ) ) $actions['delete'] = '' . __( 'Delete' ) . ''; } $actions['visit'] = "" . __( 'Visit' ) . ''; $actions = apply_filters( 'manage_sites_action_links', array_filter( $actions ), $blog['blog_id'], $blogname ); echo $this->row_actions( $actions ); ?> "; if ( 'list' == $mode ) $date = 'Y/m/d'; else $date = 'Y/m/d \<\b\r \/\> g:i:s a'; echo ( $blog['last_updated'] == '0000-00-00 00:00:00' ) ? __( 'Never' ) : mysql2date( $date, $blog['last_updated'] ); ?> "; if ( $blog['registered'] == '0000-00-00 00:00:00' ) echo '—'; else echo mysql2date( $date, $blog['registered'] ); ?> "; $blogusers = get_users( array( 'blog_id' => $blog['blog_id'], 'number' => 6) ); if ( is_array( $blogusers ) ) { $blogusers_warning = ''; if ( count( $blogusers ) > 5 ) { $blogusers = array_slice( $blogusers, 0, 5 ); $blogusers_warning = __( 'Only showing first 5 users.' ) . ' ' . __( 'More' ) . ''; } foreach ( $blogusers as $user_object ) { echo '' . esc_html( $user_object->user_login ) . ' '; if ( 'list' != $mode ) echo '( ' . $user_object->user_email . ' )'; echo '
'; } if ( $blogusers_warning != '' ) echo '' . $blogusers_warning . '
'; } ?> "; do_action( 'wpmublogsaction', $blog['blog_id'] ); ?> "; do_action( 'manage_sites_custom_column', $column_name, $blog['blog_id'] ); echo ""; break; } } ?> wp-admin/includes/class-wp-ms-themes-list-table.php0000644002347300047320000002634011656660345022147 0ustar vonfabpsaclnget_pagenum(); $screen = get_current_screen(); $this->is_site_themes = ( 'site-themes-network' == $screen->id ) ? true : false; if ( $this->is_site_themes ) $this->site_id = isset( $_REQUEST['id'] ) ? intval( $_REQUEST['id'] ) : 0; parent::WP_List_Table( array( 'plural' => 'themes' ) ); } function get_table_classes() { return array( 'widefat', 'plugins' ); // todo: remove and add CSS for .themes } function ajax_user_can() { $menu_perms = get_site_option( 'menu_items', array() ); if ( empty( $menu_perms['themes'] ) && ! is_super_admin() ) return false; if ( $this->is_site_themes && !current_user_can('manage_sites') ) return false; elseif ( !$this->is_site_themes && !current_user_can('manage_network_themes') ) return false; return true; } function prepare_items() { global $status, $themes, $totals, $page, $orderby, $order, $s; wp_reset_vars( array( 'orderby', 'order', 's' ) ); $themes = array( 'all' => apply_filters( 'all_themes', get_themes() ), 'search' => array(), 'enabled' => array(), 'disabled' => array(), 'upgrade' => array() ); $site_allowed_themes = get_site_allowed_themes(); if ( !$this->is_site_themes ) { $allowed_themes = $site_allowed_themes; $themes_per_page = $this->get_items_per_page( 'themes_network_per_page' ); } else { $allowed_themes = wpmu_get_blog_allowedthemes( $this->site_id ); $themes_per_page = $this->get_items_per_page( 'site_themes_network_per_page' ); } $current = get_site_transient( 'update_themes' ); foreach ( (array) $themes['all'] as $key => $theme ) { $theme_key = $theme['Stylesheet']; if ( isset( $allowed_themes [ $theme_key ] ) ) { $themes['all'][$key]['enabled'] = true; $themes['enabled'][$key] = $themes['all'][$key]; } else { $themes['all'][$key]['enabled'] = false; $themes['disabled'][$key] = $themes['all'][$key]; } if ( isset( $current->response[ $theme['Template'] ] ) ) $themes['upgrade'][$key] = $themes['all'][$key]; if ( $this->is_site_themes && isset( $site_allowed_themes[$theme_key] ) ) { unset( $themes['all'][$key] ); unset( $themes['enabled'][$key] ); unset( $themes['disabled'][$key] ); } } if ( !current_user_can( 'update_themes' ) || $this->is_site_themes ) $themes['upgrade'] = array(); if ( $s ) { $status = 'search'; $themes['search'] = array_filter( $themes['all'], array( &$this, '_search_callback' ) ); } $totals = array(); foreach ( $themes as $type => $list ) $totals[ $type ] = count( $list ); if ( empty( $themes[ $status ] ) && !in_array( $status, array( 'all', 'search' ) ) ) $status = 'all'; $this->items = $themes[ $status ]; $total_this_page = $totals[ $status ]; if ( $orderby ) { $orderby = ucfirst( $orderby ); $order = strtoupper( $order ); uasort( $this->items, array( &$this, '_order_callback' ) ); } $start = ( $page - 1 ) * $themes_per_page; if ( $total_this_page > $themes_per_page ) $this->items = array_slice( $this->items, $start, $themes_per_page ); $this->set_pagination_args( array( 'total_items' => $total_this_page, 'per_page' => $themes_per_page, ) ); } function _search_callback( $theme ) { static $term; if ( is_null( $term ) ) $term = stripslashes( $_REQUEST['s'] ); $search_fields = array( 'Name', 'Title', 'Description', 'Author', 'Author Name', 'Author URI', 'Template', 'Stylesheet' ); foreach ( $search_fields as $field ) if ( stripos( $theme[ $field ], $term ) !== false ) return true; return false; } function _order_callback( $theme_a, $theme_b ) { global $orderby, $order; $a = $theme_a[$orderby]; $b = $theme_b[$orderby]; if ( $a == $b ) return 0; if ( 'DESC' == $order ) return ( $a < $b ) ? 1 : -1; else return ( $a < $b ) ? -1 : 1; } function no_items() { global $themes; if ( !empty( $themes['all'] ) ) _e( 'No themes found.' ); else _e( 'You do not appear to have any themes available at this time.' ); } function get_columns() { global $status; return array( 'cb' => '', 'name' => __( 'Theme' ), 'description' => __( 'Description' ), ); } function get_sortable_columns() { return array( 'name' => 'name', ); } function get_views() { global $totals, $status; $status_links = array(); foreach ( $totals as $type => $count ) { if ( !$count ) continue; switch ( $type ) { case 'all': $text = _nx( 'All (%s)', 'All (%s)', $count, 'themes' ); break; case 'enabled': $text = _n( 'Enabled (%s)', 'Enabled (%s)', $count ); break; case 'disabled': $text = _n( 'Disabled (%s)', 'Disabled (%s)', $count ); break; case 'upgrade': $text = _n( 'Update Available (%s)', 'Update Available (%s)', $count ); break; } if ( $this->is_site_themes ) $url = 'site-themes.php?id=' . $this->site_id; else $url = 'themes.php'; if ( 'search' != $type ) { $status_links[$type] = sprintf( "%s", esc_url( add_query_arg('theme_status', $type, $url) ), ( $type == $status ) ? ' class="current"' : '', sprintf( $text, number_format_i18n( $count ) ) ); } } return $status_links; } function get_bulk_actions() { global $status; $actions = array(); if ( 'enabled' != $status ) $actions['enable-selected'] = $this->is_site_themes ? __( 'Enable' ) : __( 'Network Enable' ); if ( 'disabled' != $status ) $actions['disable-selected'] = $this->is_site_themes ? __( 'Disable' ) : __( 'Network Disable' ); if ( ! $this->is_site_themes ) { if ( current_user_can( 'delete_themes' ) ) $actions['delete-selected'] = __( 'Delete' ); if ( current_user_can( 'update_themes' ) ) $actions['update-selected'] = __( 'Update' ); } return $actions; } function bulk_actions( $which ) { global $status; parent::bulk_actions( $which ); } function current_action() { return parent::current_action(); } function display_rows() { foreach ( $this->items as $key => $theme ) $this->single_row( $key, $theme ); } function single_row( $key, $theme ) { global $status, $page, $s; $context = $status; if ( $this->is_site_themes ) $url = "site-themes.php?id={$this->site_id}&"; else $url = 'themes.php?'; // preorder $actions = array( 'enable' => '', 'disable' => '', 'edit' => '', 'delete' => '' ); $theme_key = $theme['Stylesheet']; if ( empty( $theme['enabled'] ) ) $actions['enable'] = '' . ( $this->is_site_themes ? __( 'Enable' ) : __( 'Network Enable' ) ) . ''; else $actions['disable'] = '' . ( $this->is_site_themes ? __( 'Disable' ) : __( 'Network Disable' ) ) . ''; if ( current_user_can('edit_themes') ) $actions['edit'] = '' . __('Edit') . ''; if ( empty( $theme['enabled'] ) && current_user_can( 'delete_themes' ) && ! $this->is_site_themes && $theme_key != get_option( 'stylesheet' ) && $theme_key != get_option( 'template' ) ) $actions['delete'] = '' . __( 'Delete' ) . ''; $actions = apply_filters( 'theme_action_links', array_filter( $actions ), $theme_key, $theme, $context ); $actions = apply_filters( "theme_action_links_$theme_key", $actions, $theme_key, $theme, $context ); $class = empty( $theme['enabled'] ) ? 'inactive' : 'active'; $checkbox_id = "checkbox_" . md5($theme['Name']); $checkbox = ""; $description = '

' . $theme['Description'] . '

'; $theme_name = $theme['Name']; $id = sanitize_title( $theme_name ); echo ""; list( $columns, $hidden ) = $this->get_column_info(); foreach ( $columns as $column_name => $column_display_name ) { $style = ''; if ( in_array( $column_name, $hidden ) ) $style = ' style="display:none;"'; switch ( $column_name ) { case 'cb': echo ""; break; case 'name': echo ""; break; case 'description': echo ""; break; default: echo ""; } } echo ""; if ( $this->is_site_themes ) remove_action( "after_theme_row_$theme_key", 'wp_theme_update_row' ); do_action( 'after_theme_row', $theme_key, $theme, $status ); do_action( "after_theme_row_$theme_key", $theme_key, $theme, $status ); } } ?> wp-admin/includes/class-wp-ms-users-list-table.php0000644002347300047320000002101511656660346022016 0ustar vonfabpsaclnget_items_per_page( 'users_network_per_page' ); $role = isset( $_REQUEST['role'] ) ? $_REQUEST['role'] : ''; $paged = $this->get_pagenum(); $args = array( 'number' => $users_per_page, 'offset' => ( $paged-1 ) * $users_per_page, 'search' => $usersearch, 'blog_id' => 0, 'fields' => 'all_with_meta' ); $args['search'] = ltrim($args['search'], '*'); if ( $role == 'super' ) { $logins = implode( "', '", get_super_admins() ); $args['include'] = $wpdb->get_col( "SELECT ID FROM $wpdb->users WHERE user_login IN ('$logins')" ); } // If the network is large and a search is not being performed, show only the latest users with no paging in order // to avoid expensive count queries. if ( !$usersearch && ( get_blog_count() >= 10000 ) ) { if ( !isset($_REQUEST['orderby']) ) $_GET['orderby'] = $_REQUEST['orderby'] = 'id'; if ( !isset($_REQUEST['order']) ) $_GET['order'] = $_REQUEST['order'] = 'DESC'; $args['count_total'] = false; } if ( isset( $_REQUEST['orderby'] ) ) $args['orderby'] = $_REQUEST['orderby']; if ( isset( $_REQUEST['order'] ) ) $args['order'] = $_REQUEST['order']; $mode = empty( $_REQUEST['mode'] ) ? 'list' : $_REQUEST['mode']; // Query the user IDs for this page $wp_user_search = new WP_User_Query( $args ); $this->items = $wp_user_search->get_results(); $this->set_pagination_args( array( 'total_items' => $wp_user_search->get_total(), 'per_page' => $users_per_page, ) ); } function get_bulk_actions() { $actions = array(); if ( current_user_can( 'delete_users' ) ) $actions['delete'] = __( 'Delete' ); $actions['spam'] = _x( 'Mark as Spam', 'user' ); $actions['notspam'] = _x( 'Not Spam', 'user' ); return $actions; } function no_items() { _e( 'No users found.' ); } function get_views() { global $wp_roles, $role; $total_users = get_user_count(); $super_admins = get_super_admins(); $total_admins = count( $super_admins ); $current_role = false; $class = $role != 'super' ? ' class="current"' : ''; $role_links = array(); $role_links['all'] = "" . sprintf( _nx( 'All (%s)', 'All (%s)', $total_users, 'users' ), number_format_i18n( $total_users ) ) . ''; $class = $role == 'super' ? ' class="current"' : ''; $role_links['super'] = "" . sprintf( _n( 'Super Admin (%s)', 'Super Admins (%s)', $total_admins ), number_format_i18n( $total_admins ) ) . ''; return $role_links; } function pagination( $which ) { global $mode; parent::pagination ( $which ); if ( 'top' == $which ) $this->view_switcher( $mode ); } function get_columns() { $users_columns = array( 'cb' => '', 'username' => __( 'Username' ), 'name' => __( 'Name' ), 'email' => __( 'E-mail' ), 'registered' => _x( 'Registered', 'user' ), 'blogs' => __( 'Sites' ) ); $users_columns = apply_filters( 'wpmu_users_columns', $users_columns ); return $users_columns; } function get_sortable_columns() { return array( 'username' => 'login', 'name' => 'name', 'email' => 'email', 'registered' => 'id', ); } function display_rows() { global $current_site, $mode; $alt = ''; $super_admins = get_super_admins(); foreach ( $this->items as $user ) { $alt = ( 'alternate' == $alt ) ? '' : 'alternate'; $status_list = array( 'spam' => 'site-spammed', 'deleted' => 'site-deleted' ); foreach ( $status_list as $status => $col ) { if ( $user->$status ) $alt .= " $col"; } ?> get_column_info(); foreach ( $columns as $column_name => $column_display_name ) : $class = "class='$column_name column-$column_name'"; $style = ''; if ( in_array( $column_name, $hidden ) ) $style = ' style="display:none;"'; $attributes = "$class$style"; switch ( $column_name ) { case 'cb': ?> user_email, 32 ); if ( get_current_user_id() == $user->ID ) { $edit_link = esc_url( network_admin_url( 'profile.php' ) ); } else { $edit_link = esc_url( network_admin_url( add_query_arg( 'wp_http_referer', urlencode( stripslashes( $_SERVER['REQUEST_URI'] ) ), 'user-edit.php?user_id=' . $user->ID ) ) ); } echo "$user->first_name $user->last_name"; break; case 'email': echo ""; break; case 'registered': if ( 'list' == $mode ) $date = 'Y/m/d'; else $date = 'Y/m/d \<\b\r \/\> g:i:s a'; echo ""; break; case 'blogs': $blogs = get_blogs_of_user( $user->ID, true ); echo ""; echo apply_filters( 'manage_users_custom_column', '', $column_name, $user->ID ); echo ""; break; } endforeach ?> wp-admin/includes/class-wp-plugin-install-list-table.php0000644002347300047320000002051311656660346023204 0ustar vonfabpsaclnget_pagenum(); $per_page = 30; // These are the tabs which are shown on the page $tabs = array(); $tabs['dashboard'] = __( 'Search' ); if ( 'search' == $tab ) $tabs['search'] = __( 'Search Results' ); $tabs['upload'] = __( 'Upload' ); $tabs['featured'] = _x( 'Featured','Plugin Installer' ); $tabs['popular'] = _x( 'Popular','Plugin Installer' ); $tabs['new'] = _x( 'Newest','Plugin Installer' ); $tabs['updated'] = _x( 'Recently Updated','Plugin Installer' ); $nonmenu_tabs = array( 'plugin-information' ); //Valid actions to perform which do not have a Menu item. $tabs = apply_filters( 'install_plugins_tabs', $tabs ); $nonmenu_tabs = apply_filters( 'install_plugins_nonmenu_tabs', $nonmenu_tabs ); // If a non-valid menu tab has been selected, And its not a non-menu action. if ( empty( $tab ) || ( !isset( $tabs[ $tab ] ) && !in_array( $tab, (array) $nonmenu_tabs ) ) ) $tab = key( $tabs ); $args = array( 'page' => $paged, 'per_page' => $per_page ); switch ( $tab ) { case 'search': $type = isset( $_REQUEST['type'] ) ? stripslashes( $_REQUEST['type'] ) : ''; $term = isset( $_REQUEST['s'] ) ? stripslashes( $_REQUEST['s'] ) : ''; switch ( $type ) { case 'tag': $args['tag'] = sanitize_title_with_dashes( $term ); break; case 'term': $args['search'] = $term; break; case 'author': $args['author'] = $term; break; } add_action( 'install_plugins_table_header', 'install_search_form' ); break; case 'featured': case 'popular': case 'new': case 'updated': $args['browse'] = $tab; break; default: $args = false; } if ( !$args ) return; $api = plugins_api( 'query_plugins', $args ); if ( is_wp_error( $api ) ) wp_die( $api->get_error_message() . '

' . __( 'Try again' ) . '' ); $this->items = $api->plugins; $this->set_pagination_args( array( 'total_items' => $api->info['results'], 'per_page' => $per_page, ) ); } function no_items() { _e( 'No plugins match your request.' ); } function get_views() { global $tabs, $tab; $display_tabs = array(); foreach ( (array) $tabs as $action => $text ) { $class = ( $action == $tab ) ? ' class="current"' : ''; $href = self_admin_url('plugin-install.php?tab=' . $action); $display_tabs['plugin-install-'.$action] = "$text"; } return $display_tabs; } function display_tablenav( $which ) { if ( 'top' == $which ) { ?>

pagination( $which ); ?>
pagination( $which ); ?>
_args ); return array( 'widefat', $plural ); } function get_columns() { return array( 'name' => __( 'Name' ), 'version' => __( 'Version' ), 'rating' => __( 'Rating' ), 'description' => __( 'Description' ), ); } function display_rows() { $plugins_allowedtags = array( 'a' => array( 'href' => array(),'title' => array(), 'target' => array() ), 'abbr' => array( 'title' => array() ),'acronym' => array( 'title' => array() ), 'code' => array(), 'pre' => array(), 'em' => array(),'strong' => array(), 'ul' => array(), 'ol' => array(), 'li' => array(), 'p' => array(), 'br' => array() ); list( $columns, $hidden ) = $this->get_column_info(); $style = array(); foreach ( $columns as $column_name => $column_display_name ) { $style[ $column_name ] = in_array( $column_name, $hidden ) ? 'style="display:none;"' : ''; } foreach ( (array) $this->items as $plugin ) { if ( is_object( $plugin ) ) $plugin = (array) $plugin; $title = wp_kses( $plugin['name'], $plugins_allowedtags ); //Limit description to 400char, and remove any HTML. $description = strip_tags( $plugin['description'] ); if ( strlen( $description ) > 400 ) $description = mb_substr( $description, 0, 400 ) . '…'; //remove any trailing entities $description = preg_replace( '/&[^;\s]{0,6}$/', '', $description ); //strip leading/trailing & multiple consecutive lines $description = trim( $description ); $description = preg_replace( "|(\r?\n)+|", "\n", $description ); //\n =>
$description = nl2br( $description ); $version = wp_kses( $plugin['version'], $plugins_allowedtags ); $name = strip_tags( $title . ' ' . $version ); $author = $plugin['author']; if ( ! empty( $plugin['author'] ) ) $author = ' ' . sprintf( __( 'By %s' ), $author ) . '.'; $author = wp_kses( $author, $plugins_allowedtags ); $action_links = array(); $action_links[] = '' . __( 'Details' ) . ''; if ( current_user_can( 'install_plugins' ) || current_user_can( 'update_plugins' ) ) { $status = install_plugin_install_status( $plugin ); switch ( $status['status'] ) { case 'install': if ( $status['url'] ) $action_links[] = '' . __( 'Install Now' ) . ''; break; case 'update_available': if ( $status['url'] ) $action_links[] = '' . sprintf( __( 'Update Now' ), $status['version'] ) . ''; break; case 'latest_installed': case 'newer_installed': $action_links[] = '' . __( 'Installed' ) . ''; break; } } $action_links = apply_filters( 'plugin_install_action_links', $action_links, $plugin ); ?> wp-admin/includes/class-wp-plugins-list-table.php0000644002347300047320000004136011656660346021726 0ustar vonfabpsaclnget_pagenum(); parent::WP_List_Table( array( 'plural' => 'plugins', ) ); } function get_table_classes() { return array( 'widefat', $this->_args['plural'] ); } function ajax_user_can() { if ( is_multisite() ) { $menu_perms = get_site_option( 'menu_items', array() ); if ( empty( $menu_perms['plugins'] ) && ! is_super_admin() ) return false; } return current_user_can('activate_plugins'); } function prepare_items() { global $status, $plugins, $totals, $page, $orderby, $order, $s; wp_reset_vars( array( 'orderby', 'order', 's' ) ); $plugins = array( 'all' => apply_filters( 'all_plugins', get_plugins() ), 'search' => array(), 'active' => array(), 'inactive' => array(), 'recently_activated' => array(), 'upgrade' => array(), 'mustuse' => array(), 'dropins' => array() ); $screen = get_current_screen(); if ( ! is_multisite() || ( $screen->is_network && current_user_can('manage_network_plugins') ) ) { if ( apply_filters( 'show_advanced_plugins', true, 'mustuse' ) ) $plugins['mustuse'] = get_mu_plugins(); if ( apply_filters( 'show_advanced_plugins', true, 'dropins' ) ) $plugins['dropins'] = get_dropins(); $current = get_site_transient( 'update_plugins' ); foreach ( (array) $plugins['all'] as $plugin_file => $plugin_data ) { if ( isset( $current->response[ $plugin_file ] ) ) $plugins['upgrade'][ $plugin_file ] = $plugin_data; } } set_transient( 'plugin_slugs', array_keys( $plugins['all'] ), 86400 ); $recently_activated = get_option( 'recently_activated', array() ); $one_week = 7*24*60*60; foreach ( $recently_activated as $key => $time ) if ( $time + $one_week < time() ) unset( $recently_activated[$key] ); update_option( 'recently_activated', $recently_activated ); foreach ( (array) $plugins['all'] as $plugin_file => $plugin_data ) { // Filter into individual sections if ( is_multisite() && is_network_only_plugin( $plugin_file ) && !$screen->is_network ) { unset( $plugins['all'][ $plugin_file] ); } elseif ( is_plugin_active_for_network($plugin_file) && !$screen->is_network ) { unset( $plugins['all'][ $plugin_file ] ); } elseif ( is_multisite() && is_network_only_plugin( $plugin_file ) && !current_user_can( 'manage_network_plugins' ) ) { $plugins['network'][ $plugin_file ] = $plugin_data; } elseif ( ( !$screen->is_network && is_plugin_active( $plugin_file ) ) || ( $screen->is_network && is_plugin_active_for_network( $plugin_file ) ) ) { $plugins['active'][ $plugin_file ] = $plugin_data; } else { if ( !$screen->is_network && isset( $recently_activated[ $plugin_file ] ) ) // Was the plugin recently activated? $plugins['recently_activated'][ $plugin_file ] = $plugin_data; $plugins['inactive'][ $plugin_file ] = $plugin_data; } } if ( !current_user_can( 'update_plugins' ) ) $plugins['upgrade'] = array(); if ( $s ) { $status = 'search'; $plugins['search'] = array_filter( $plugins['all'], array( &$this, '_search_callback' ) ); } $totals = array(); foreach ( $plugins as $type => $list ) $totals[ $type ] = count( $list ); if ( empty( $plugins[ $status ] ) && !in_array( $status, array( 'all', 'search' ) ) ) $status = 'all'; $this->items = array(); foreach ( $plugins[ $status ] as $plugin_file => $plugin_data ) { // Translate, Don't Apply Markup, Sanitize HTML $this->items[$plugin_file] = _get_plugin_data_markup_translate( $plugin_file, $plugin_data, false, true ); } $total_this_page = $totals[ $status ]; if ( $orderby ) { $orderby = ucfirst( $orderby ); $order = strtoupper( $order ); uasort( $this->items, array( &$this, '_order_callback' ) ); } $plugins_per_page = $this->get_items_per_page( str_replace( '-', '_', $screen->id . '_per_page' ) ); $start = ( $page - 1 ) * $plugins_per_page; if ( $total_this_page > $plugins_per_page ) $this->items = array_slice( $this->items, $start, $plugins_per_page ); $this->set_pagination_args( array( 'total_items' => $total_this_page, 'per_page' => $plugins_per_page, ) ); } function _search_callback( $plugin ) { static $term; if ( is_null( $term ) ) $term = stripslashes( $_REQUEST['s'] ); foreach ( $plugin as $value ) if ( stripos( $value, $term ) !== false ) return true; return false; } function _order_callback( $plugin_a, $plugin_b ) { global $orderby, $order; $a = $plugin_a[$orderby]; $b = $plugin_b[$orderby]; if ( $a == $b ) return 0; if ( 'DESC' == $order ) return ( $a < $b ) ? 1 : -1; else return ( $a < $b ) ? -1 : 1; } function no_items() { global $plugins; if ( !empty( $plugins['all'] ) ) _e( 'No plugins found.' ); else _e( 'You do not appear to have any plugins available at this time.' ); } function get_columns() { global $status; return array( 'cb' => !in_array( $status, array( 'mustuse', 'dropins' ) ) ? '' : '', 'name' => __( 'Plugin' ), 'description' => __( 'Description' ), ); } function get_sortable_columns() { return array(); } function get_views() { global $totals, $status; $status_links = array(); foreach ( $totals as $type => $count ) { if ( !$count ) continue; switch ( $type ) { case 'all': $text = _nx( 'All (%s)', 'All (%s)', $count, 'plugins' ); break; case 'active': $text = _n( 'Active (%s)', 'Active (%s)', $count ); break; case 'recently_activated': $text = _n( 'Recently Active (%s)', 'Recently Active (%s)', $count ); break; case 'inactive': $text = _n( 'Inactive (%s)', 'Inactive (%s)', $count ); break; case 'network': $text = _n( 'Network (%s)', 'Network (%s)', $count ); break; case 'mustuse': $text = _n( 'Must-Use (%s)', 'Must-Use (%s)', $count ); break; case 'dropins': $text = _n( 'Drop-ins (%s)', 'Drop-ins (%s)', $count ); break; case 'upgrade': $text = _n( 'Update Available (%s)', 'Update Available (%s)', $count ); break; } if ( 'search' != $type ) { $status_links[$type] = sprintf( "%s", add_query_arg('plugin_status', $type, 'plugins.php'), ( $type == $status ) ? ' class="current"' : '', sprintf( $text, number_format_i18n( $count ) ) ); } } return $status_links; } function get_bulk_actions() { global $status; $actions = array(); $screen = get_current_screen(); if ( 'active' != $status ) { $action = $screen->is_network ? 'network-activate-selected' : 'activate-selected'; $actions[ $action ] = __( 'Activate' ); } if ( 'inactive' != $status && 'recent' != $status ) $actions['deactivate-selected'] = __( 'Deactivate' ); if ( !is_multisite() || $screen->is_network ) { if ( current_user_can( 'update_plugins' ) ) $actions['update-selected'] = __( 'Update' ); if ( current_user_can( 'delete_plugins' ) && ( 'active' != $status ) ) $actions['delete-selected'] = __( 'Delete' ); } return $actions; } function bulk_actions( $which ) { global $status; if ( in_array( $status, array( 'mustuse', 'dropins' ) ) ) return; parent::bulk_actions( $which ); } function extra_tablenav( $which ) { global $status; if ( ! in_array($status, array('recently_activated', 'mustuse', 'dropins') ) ) return; echo '
'; if ( 'recently_activated' == $status ) submit_button( __( 'Clear List' ), 'secondary', 'clear-recent-list', false ); elseif ( 'top' == $which && 'mustuse' == $status ) echo '

' . __( 'Files in the /wp-content/mu-plugins directory are executed automatically.' ) . '

'; elseif ( 'top' == $which && 'dropins' == $status ) echo '

' . __( 'Drop-ins are advanced plugins in the /wp-content directory that replace WordPress functionality when present.' ) . '

'; echo '
'; } function current_action() { if ( isset($_POST['clear-recent-list']) ) return 'clear-recent-list'; return parent::current_action(); } function display_rows() { global $status; $screen = get_current_screen(); if ( is_multisite() && !$screen->is_network && in_array( $status, array( 'mustuse', 'dropins' ) ) ) return; foreach ( $this->items as $plugin_file => $plugin_data ) $this->single_row( $plugin_file, $plugin_data ); } function single_row( $plugin_file, $plugin_data ) { global $status, $page, $s; $context = $status; $screen = get_current_screen(); // preorder $actions = array( 'network_deactivate' => '', 'deactivate' => '', 'network_only' => '', 'activate' => '', 'network_activate' => '', 'edit' => '', 'delete' => '', ); if ( 'mustuse' == $context ) { $is_active = true; } elseif ( 'dropins' == $context ) { $dropins = _get_dropins(); $plugin_name = $plugin_file; if ( $plugin_file != $plugin_data['Name'] ) $plugin_name .= '
' . $plugin_data['Name']; if ( true === ( $dropins[ $plugin_file ][1] ) ) { // Doesn't require a constant $is_active = true; $description = '

' . $dropins[ $plugin_file ][0] . '

'; } elseif ( constant( $dropins[ $plugin_file ][1] ) ) { // Constant is true $is_active = true; $description = '

' . $dropins[ $plugin_file ][0] . '

'; } else { $is_active = false; $description = '

' . $dropins[ $plugin_file ][0] . ' ' . __('Inactive:') . ' ' . sprintf( __( 'Requires %s in wp-config.php.' ), "define('" . $dropins[ $plugin_file ][1] . "', true);" ) . '

'; } if ( $plugin_data['Description'] ) $description .= '

' . $plugin_data['Description'] . '

'; } else { $is_active_for_network = is_plugin_active_for_network($plugin_file); if ( $screen->is_network ) $is_active = $is_active_for_network; else $is_active = is_plugin_active( $plugin_file ); if ( $is_active_for_network && !is_super_admin() && !$screen->is_network ) return; if ( $screen->is_network ) { if ( $is_active_for_network ) { if ( current_user_can( 'manage_network_plugins' ) ) $actions['network_deactivate'] = '' . __('Network Deactivate') . ''; } else { if ( current_user_can( 'manage_network_plugins' ) ) $actions['network_activate'] = '' . __('Network Activate') . ''; if ( current_user_can( 'delete_plugins' ) && ! is_plugin_active( $plugin_file ) ) $actions['delete'] = '' . __('Delete') . ''; } } else { if ( $is_active ) { $actions['deactivate'] = '' . __('Deactivate') . ''; } else { $actions['activate'] = '' . __('Activate') . ''; if ( ! is_multisite() && current_user_can('delete_plugins') ) $actions['delete'] = '' . __('Delete') . ''; } // end if $is_active } // end if $screen->is_network if ( ( ! is_multisite() || $screen->is_network ) && current_user_can('edit_plugins') && is_writable(WP_PLUGIN_DIR . '/' . $plugin_file) ) $actions['edit'] = '' . __('Edit') . ''; } // end if $context $prefix = $screen->is_network ? 'network_admin_' : ''; $actions = apply_filters( $prefix . 'plugin_action_links', array_filter( $actions ), $plugin_file, $plugin_data, $context ); $actions = apply_filters( $prefix . "plugin_action_links_$plugin_file", $actions, $plugin_file, $plugin_data, $context ); $class = $is_active ? 'active' : 'inactive'; $checkbox_id = "checkbox_" . md5($plugin_data['Name']); $checkbox = in_array( $status, array( 'mustuse', 'dropins' ) ) ? '' : ""; if ( 'dropins' != $context ) { $description = '

' . ( $plugin_data['Description'] ? $plugin_data['Description'] : ' ' ) . '

'; $plugin_name = $plugin_data['Name']; } $id = sanitize_title( $plugin_name ); echo ""; list( $columns, $hidden ) = $this->get_column_info(); foreach ( $columns as $column_name => $column_display_name ) { $style = ''; if ( in_array( $column_name, $hidden ) ) $style = ' style="display:none;"'; switch ( $column_name ) { case 'cb': echo ""; break; case 'name': echo ""; break; case 'description': echo ""; break; default: echo ""; } } echo ""; do_action( 'after_plugin_row', $plugin_file, $plugin_data, $status ); do_action( "after_plugin_row_$plugin_file", $plugin_file, $plugin_data, $status ); } } ?> wp-admin/includes/class-wp-posts-list-table.php0000644002347300047320000010377611656660346021427 0ustar vonfabpsacln true ) ) ) ) $post_type = $_REQUEST['post_type']; else wp_die( __( 'Invalid post type' ) ); $_REQUEST['post_type'] = $post_type; $post_type_object = get_post_type_object( $post_type ); if ( !current_user_can( $post_type_object->cap->edit_others_posts ) ) { $this->user_posts_count = $wpdb->get_var( $wpdb->prepare( " SELECT COUNT( 1 ) FROM $wpdb->posts WHERE post_type = %s AND post_status NOT IN ( 'trash', 'auto-draft' ) AND post_author = %d ", $post_type, get_current_user_id() ) ); if ( $this->user_posts_count && empty( $_REQUEST['post_status'] ) && empty( $_REQUEST['all_posts'] ) && empty( $_REQUEST['author'] ) && empty( $_REQUEST['show_sticky'] ) ) $_GET['author'] = get_current_user_id(); } if ( 'post' == $post_type && $sticky_posts = get_option( 'sticky_posts' ) ) { $sticky_posts = implode( ', ', array_map( 'absint', (array) $sticky_posts ) ); $this->sticky_posts_count = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT( 1 ) FROM $wpdb->posts WHERE post_type = %s AND post_status != 'trash' AND ID IN ($sticky_posts)", $post_type ) ); } parent::WP_List_Table( array( 'plural' => 'posts', ) ); } function ajax_user_can() { global $post_type_object; return current_user_can( $post_type_object->cap->edit_posts ); } function prepare_items() { global $post_type_object, $post_type, $avail_post_stati, $wp_query, $per_page, $mode; $avail_post_stati = wp_edit_posts_query(); $this->hierarchical_display = ( $post_type_object->hierarchical && 'menu_order title' == $wp_query->query['orderby'] ); $total_items = $this->hierarchical_display ? $wp_query->post_count : $wp_query->found_posts; $per_page = $this->get_items_per_page( 'edit_' . $post_type . '_per_page' ); $per_page = apply_filters( 'edit_posts_per_page', $per_page, $post_type ); if ( $this->hierarchical_display ) $total_pages = ceil( $total_items / $per_page ); else $total_pages = $wp_query->max_num_pages; $mode = empty( $_REQUEST['mode'] ) ? 'list' : $_REQUEST['mode']; $this->is_trash = isset( $_REQUEST['post_status'] ) && $_REQUEST['post_status'] == 'trash'; $this->set_pagination_args( array( 'total_items' => $total_items, 'total_pages' => $total_pages, 'per_page' => $per_page ) ); } function has_items() { return have_posts(); } function no_items() { global $post_type_object; if ( isset( $_REQUEST['post_status'] ) && 'trash' == $_REQUEST['post_status'] ) echo $post_type_object->labels->not_found_in_trash; else echo $post_type_object->labels->not_found; } function get_views() { global $post_type, $post_type_object, $locked_post_status, $avail_post_stati; if ( !empty($locked_post_status) ) return array(); $status_links = array(); $num_posts = wp_count_posts( $post_type, 'readable' ); $class = ''; $allposts = ''; $current_user_id = get_current_user_id(); if ( $this->user_posts_count ) { if ( isset( $_GET['author'] ) && ( $_GET['author'] == $current_user_id ) ) $class = ' class="current"'; $status_links['mine'] = "" . sprintf( _nx( 'Mine (%s)', 'Mine (%s)', $this->user_posts_count, 'posts' ), number_format_i18n( $this->user_posts_count ) ) . ''; $allposts = '&all_posts=1'; } $total_posts = array_sum( (array) $num_posts ); // Subtract post types that are not included in the admin all list. foreach ( get_post_stati( array('show_in_admin_all_list' => false) ) as $state ) $total_posts -= $num_posts->$state; $class = empty( $class ) && empty( $_REQUEST['post_status'] ) && empty( $_REQUEST['show_sticky'] ) ? ' class="current"' : ''; $status_links['all'] = "" . sprintf( _nx( 'All (%s)', 'All (%s)', $total_posts, 'posts' ), number_format_i18n( $total_posts ) ) . ''; foreach ( get_post_stati(array('show_in_admin_status_list' => true), 'objects') as $status ) { $class = ''; $status_name = $status->name; if ( !in_array( $status_name, $avail_post_stati ) ) continue; if ( empty( $num_posts->$status_name ) ) continue; if ( isset($_REQUEST['post_status']) && $status_name == $_REQUEST['post_status'] ) $class = ' class="current"'; $status_links[$status_name] = "" . sprintf( translate_nooped_plural( $status->label_count, $num_posts->$status_name ), number_format_i18n( $num_posts->$status_name ) ) . ''; } if ( ! empty( $this->sticky_posts_count ) ) { $class = ! empty( $_REQUEST['show_sticky'] ) ? ' class="current"' : ''; $sticky_link = array( 'sticky' => "" . sprintf( _nx( 'Sticky (%s)', 'Sticky (%s)', $this->sticky_posts_count, 'posts' ), number_format_i18n( $this->sticky_posts_count ) ) . '' ); // Sticky comes after Publish, or if not listed, after All. $split = 1 + array_search( ( isset( $status_links['publish'] ) ? 'publish' : 'all' ), array_keys( $status_links ) ); $status_links = array_merge( array_slice( $status_links, 0, $split ), $sticky_link, array_slice( $status_links, $split ) ); } return $status_links; } function get_bulk_actions() { $actions = array(); if ( $this->is_trash ) $actions['untrash'] = __( 'Restore' ); else $actions['edit'] = __( 'Edit' ); if ( $this->is_trash || !EMPTY_TRASH_DAYS ) $actions['delete'] = __( 'Delete Permanently' ); else $actions['trash'] = __( 'Move to Trash' ); return $actions; } function extra_tablenav( $which ) { global $post_type, $post_type_object, $cat; ?>
months_dropdown( $post_type ); if ( is_object_in_taxonomy( $post_type, 'category' ) ) { $dropdown_options = array( 'show_option_all' => __( 'View all categories' ), 'hide_empty' => 0, 'hierarchical' => 1, 'show_count' => 0, 'orderby' => 'name', 'selected' => $cat ); wp_dropdown_categories( $dropdown_options ); } do_action( 'restrict_manage_posts' ); submit_button( __( 'Filter' ), 'secondary', false, false, array( 'id' => 'post-query-submit' ) ); } if ( $this->is_trash && current_user_can( $post_type_object->cap->edit_others_posts ) ) { submit_button( __( 'Empty Trash' ), 'button-secondary apply', 'delete_all', false ); } ?>
hierarchical ) $this->view_switcher( $mode ); } function get_table_classes() { global $post_type_object; return array( 'widefat', 'fixed', $post_type_object->hierarchical ? 'pages' : 'posts' ); } function get_columns() { $screen = get_current_screen(); if ( empty( $screen ) ) $post_type = 'post'; else $post_type = $screen->post_type; $posts_columns = array(); $posts_columns['cb'] = ''; /* translators: manage posts column name */ $posts_columns['title'] = _x( 'Title', 'column name' ); if ( post_type_supports( $post_type, 'author' ) ) $posts_columns['author'] = __( 'Author' ); if ( empty( $post_type ) || is_object_in_taxonomy( $post_type, 'category' ) ) $posts_columns['categories'] = __( 'Categories' ); if ( empty( $post_type ) || is_object_in_taxonomy( $post_type, 'post_tag' ) ) $posts_columns['tags'] = __( 'Tags' ); $post_status = !empty( $_REQUEST['post_status'] ) ? $_REQUEST['post_status'] : 'all'; if ( post_type_supports( $post_type, 'comments' ) && !in_array( $post_status, array( 'pending', 'draft', 'future' ) ) ) $posts_columns['comments'] = '
' . esc_attr__( 'Comments' ) . '
'; $posts_columns['date'] = __( 'Date' ); if ( 'page' == $post_type ) $posts_columns = apply_filters( 'manage_pages_columns', $posts_columns ); else $posts_columns = apply_filters( 'manage_posts_columns', $posts_columns, $post_type ); $posts_columns = apply_filters( "manage_{$post_type}_posts_columns", $posts_columns ); return $posts_columns; } function get_sortable_columns() { return array( 'title' => 'title', 'author' => 'author', 'parent' => 'parent', 'comments' => 'comment_count', 'date' => array( 'date', true ) ); } function display_rows( $posts = array() ) { global $wp_query, $post_type_object, $per_page; if ( empty( $posts ) ) $posts = $wp_query->posts; add_filter( 'the_title', 'esc_html' ); if ( $this->hierarchical_display ) { $this->_display_rows_hierarchical( $posts, $this->get_pagenum(), $per_page ); } else { $this->_display_rows( $posts ); } } function _display_rows( $posts ) { global $post, $mode; // Create array of post IDs. $post_ids = array(); foreach ( $posts as $a_post ) $post_ids[] = $a_post->ID; $this->comment_pending_count = get_pending_comments_num( $post_ids ); foreach ( $posts as $post ) $this->single_row( $post ); } function _display_rows_hierarchical( $pages, $pagenum = 1, $per_page = 20 ) { global $wpdb; $level = 0; if ( ! $pages ) { $pages = get_pages( array( 'sort_column' => 'menu_order' ) ); if ( ! $pages ) return false; } /* * arrange pages into two parts: top level pages and children_pages * children_pages is two dimensional array, eg. * children_pages[10][] contains all sub-pages whose parent is 10. * It only takes O( N ) to arrange this and it takes O( 1 ) for subsequent lookup operations * If searching, ignore hierarchy and treat everything as top level */ if ( empty( $_REQUEST['s'] ) ) { $top_level_pages = array(); $children_pages = array(); foreach ( $pages as $page ) { // catch and repair bad pages if ( $page->post_parent == $page->ID ) { $page->post_parent = 0; $wpdb->update( $wpdb->posts, array( 'post_parent' => 0 ), array( 'ID' => $page->ID ) ); clean_page_cache( $page->ID ); } if ( 0 == $page->post_parent ) $top_level_pages[] = $page; else $children_pages[ $page->post_parent ][] = $page; } $pages = &$top_level_pages; } $count = 0; $start = ( $pagenum - 1 ) * $per_page; $end = $start + $per_page; foreach ( $pages as $page ) { if ( $count >= $end ) break; if ( $count >= $start ) echo "\t" . $this->single_row( $page, $level ); $count++; if ( isset( $children_pages ) ) $this->_page_rows( $children_pages, $count, $page->ID, $level + 1, $pagenum, $per_page ); } // if it is the last pagenum and there are orphaned pages, display them with paging as well if ( isset( $children_pages ) && $count < $end ){ foreach ( $children_pages as $orphans ){ foreach ( $orphans as $op ) { if ( $count >= $end ) break; if ( $count >= $start ) echo "\t" . $this->single_row( $op, 0 ); $count++; } } } } /** * Given a top level page ID, display the nested hierarchy of sub-pages * together with paging support * * @since 3.1.0 (Standalone function exists since 2.6.0) * * @param unknown_type $children_pages * @param unknown_type $count * @param unknown_type $parent * @param unknown_type $level * @param unknown_type $pagenum * @param unknown_type $per_page */ function _page_rows( &$children_pages, &$count, $parent, $level, $pagenum, $per_page ) { if ( ! isset( $children_pages[$parent] ) ) return; $start = ( $pagenum - 1 ) * $per_page; $end = $start + $per_page; foreach ( $children_pages[$parent] as $page ) { if ( $count >= $end ) break; // If the page starts in a subtree, print the parents. if ( $count == $start && $page->post_parent > 0 ) { $my_parents = array(); $my_parent = $page->post_parent; while ( $my_parent ) { $my_parent = get_post( $my_parent ); $my_parents[] = $my_parent; if ( !$my_parent->post_parent ) break; $my_parent = $my_parent->post_parent; } $num_parents = count( $my_parents ); while ( $my_parent = array_pop( $my_parents ) ) { echo "\t" . $this->single_row( $my_parent, $level - $num_parents ); $num_parents--; } } if ( $count >= $start ) echo "\t" . $this->single_row( $page, $level ); $count++; $this->_page_rows( $children_pages, $count, $page->ID, $level + 1, $pagenum, $per_page ); } unset( $children_pages[$parent] ); //required in order to keep track of orphans } function single_row( $a_post, $level = 0 ) { global $post, $current_screen, $mode; static $rowclass; $global_post = $post; $post = $a_post; setup_postdata( $post ); $rowclass = 'alternate' == $rowclass ? '' : 'alternate'; $post_owner = ( get_current_user_id() == $post->post_author ? 'self' : 'other' ); $edit_link = get_edit_post_link( $post->ID ); $title = _draft_or_post_title(); $post_type_object = get_post_type_object( $post->post_type ); $can_edit_post = current_user_can( $post_type_object->cap->edit_post, $post->ID ); $post_format = get_post_format( $post->ID ); $post_format_class = ( $post_format && !is_wp_error($post_format) ) ? 'format-' . sanitize_html_class( $post_format ) : 'format-default'; ?> post_status . ' ' . $post_format_class); ?> iedit' valign="top"> get_column_info(); foreach ( $columns as $column_name => $column_display_name ) { $class = "class=\"$column_name column-$column_name\""; $style = ''; if ( in_array( $column_name, $hidden ) ) $style = ' style="display:none;"'; $attributes = "$class$style"; switch ( $column_name ) { case 'cb': ?> hierarchical_display ) { $attributes = 'class="post-title page-title column-title"' . $style; if ( 0 == $level && (int) $post->post_parent > 0 ) { //sent level 0 by accident, by default, or because we don't know the actual level $find_main_page = (int) $post->post_parent; while ( $find_main_page > 0 ) { $parent = get_page( $find_main_page ); if ( is_null( $parent ) ) break; $level++; $find_main_page = (int) $parent->post_parent; if ( !isset( $parent_name ) ) $parent_name = apply_filters( 'the_title', $parent->post_title, $parent->ID ); } } $pad = str_repeat( '— ', $level ); ?> '; break; case 'date': if ( '0000-00-00 00:00:00' == $post->post_date && 'date' == $column_name ) { $t_time = $h_time = __( 'Unpublished' ); $time_diff = 0; } else { $t_time = get_the_time( __( 'Y/m/d g:i:s A' ) ); $m_time = $post->post_date; $time = get_post_time( 'G', true, $post ); $time_diff = time() - $time; if ( $time_diff > 0 && $time_diff < 24*60*60 ) $h_time = sprintf( __( '%s ago' ), human_time_diff( $time ) ); else $h_time = mysql2date( __( 'Y/m/d' ), $m_time ); } echo ''; break; case 'categories': ?> post_type ); $post_type_object = get_post_type_object( $screen->post_type ); $taxonomy_names = get_object_taxonomies( $screen->post_type ); $hierarchical_taxonomies = array(); $flat_taxonomies = array(); foreach ( $taxonomy_names as $taxonomy_name ) { $taxonomy = get_taxonomy( $taxonomy_name ); if ( !$taxonomy->show_ui ) continue; if ( $taxonomy->hierarchical ) $hierarchical_taxonomies[] = $taxonomy; else $flat_taxonomies[] = $taxonomy; } $m = ( isset( $mode ) && 'excerpt' == $mode ) ? 'excerpt' : 'list'; $can_publish = current_user_can( $post_type_object->cap->publish_posts ); $core_columns = array( 'cb' => true, 'date' => true, 'title' => true, 'categories' => true, 'tags' => true, 'comments' => true, 'author' => true ); ?>
'; $this->no_items(); echo '
'; echo $this->column_cb( $item ); echo '"; echo call_user_func( array( &$this, 'column_' . $column_name ), $item ); echo ""; echo $this->column_default( $item, $column_name ); echo "
ID ) ) { ?> >ID, array( 80, 60 ), true ) ) { if ( $this->is_trash ) { echo $thumb; } else { ?> >is_trash ) echo $att_title; else { ?>

ID ), $matches ) ) echo esc_html( strtoupper( $matches[1] ) ); else echo strtoupper( str_replace( 'image/', '', get_post_mime_type() ) ); ?>

row_actions( $this->_get_row_actions( $post, $att_title ) ); ?>
> >slug'> " . esc_html( sanitize_term_field( 'name', $c->name, $c->term_id, 'post_tag', 'display' ) ) . ""; echo join( ', ', $out ); } else { _e( 'No Tags' ); } ?> >post_excerpt : ''; ?> > > , >
>
ID ); $this->comments_bubble( $post->ID, $pending_comments ); ?>
>
$checkbox$theme_name"; echo $this->row_actions( $actions, true ); echo "
$description
"; $theme_meta = array(); if ( !empty( $theme['Version'] ) ) $theme_meta[] = sprintf( __( 'Version %s' ), $theme['Version'] ); if ( !empty( $theme['Author'] ) ) $theme_meta[] = sprintf( __( 'By %s' ), $theme['Author'] ); if ( !empty( $theme['Theme URI'] ) ) $theme_meta[] = '' . __( 'Visit Theme Site' ) . ''; $theme_meta = apply_filters( 'theme_row_meta', $theme_meta, $theme_key, $theme, $status ); echo implode( ' | ', $theme_meta ); echo "
"; do_action( 'manage_themes_custom_column', $column_name, $theme_key, $theme ); echo "
"; ?> user_login ); ?>user_login, $super_admins ) ) echo ' - ' . __( 'Super Admin' ); ?>
' . __( 'Edit' ) . ''; if ( current_user_can( 'delete_user', $user->ID) && ! in_array( $user->user_login, $super_admins ) ) { $actions['delete'] = '' . __( 'Delete' ) . ''; } echo $this->row_actions( $actions ); ?>
$user->user_email" . mysql2date( $date, $user->user_registered ) . ""; if ( is_array( $blogs ) ) { foreach ( (array) $blogs as $key => $val ) { if ( !can_edit_network( $val->site_id ) ) continue; $path = ( $val->path == '/' ) ? '' : $val->path; echo ''; echo '' . str_replace( '.' . $current_site->domain, '', $val->domain . $path ) . ''; echo ' '; $actions = array(); $actions['edit'] = '' . __( 'Edit' ) . ''; $class = ''; if ( get_blog_status( $val->userblog_id, 'spam' ) == 1 ) $class .= 'site-spammed '; if ( get_blog_status( $val->userblog_id, 'mature' ) == 1 ) $class .= 'site-mature '; if ( get_blog_status( $val->userblog_id, 'deleted' ) == 1 ) $class .= 'site-deleted '; if ( get_blog_status( $val->userblog_id, 'archived' ) == 1 ) $class .= 'site-archived '; $actions['view'] = '' . __( 'View' ) . ''; $actions = apply_filters('ms_user_list_site_actions', $actions, $val->userblog_id); $i=0; $action_count = count( $actions ); foreach ( $actions as $action => $link ) { ++$i; ( $i == $action_count ) ? $sep = '' : $sep = ' | '; echo "$link$sep"; } echo '
'; } } ?>
> > >
<?php _e( '5 stars' ) ?>
<?php _e( '4 stars' ) ?>
<?php _e( '3 stars' ) ?>
<?php _e( '2 stars' ) ?>
<?php _e( '1 star' ) ?>
>
$checkbox$plugin_name"; echo $this->row_actions( $actions, true ); echo "
$description
"; $plugin_meta = array(); if ( !empty( $plugin_data['Version'] ) ) $plugin_meta[] = sprintf( __( 'Version %s' ), $plugin_data['Version'] ); if ( !empty( $plugin_data['Author'] ) ) { $author = $plugin_data['Author']; if ( !empty( $plugin_data['AuthorURI'] ) ) $author = '' . $plugin_data['Author'] . ''; $plugin_meta[] = sprintf( __( 'By %s' ), $author ); } if ( ! empty( $plugin_data['PluginURI'] ) ) $plugin_meta[] = '' . __( 'Visit plugin site' ) . ''; $plugin_meta = apply_filters( 'plugin_row_meta', $plugin_meta, $plugin_file, $plugin_data, $status ); echo implode( ' | ', $plugin_meta ); echo "
"; do_action( 'manage_plugins_custom_column', $column_name, $plugin_file, $plugin_data ); echo "
>post_status != 'trash' ) { ?>labels->parent_item_colon . ' ' . esc_html( $parent_name ) : ''; ?> >post_status != 'trash' ) { ?> post_status ) { $actions['edit'] = '' . __( 'Edit' ) . ''; $actions['inline hide-if-no-js'] = '' . __( 'Quick Edit' ) . ''; } if ( current_user_can( $post_type_object->cap->delete_post, $post->ID ) ) { if ( 'trash' == $post->post_status ) $actions['untrash'] = "ID ) ), 'untrash-' . $post->post_type . '_' . $post->ID ) . "'>" . __( 'Restore' ) . ""; elseif ( EMPTY_TRASH_DAYS ) $actions['trash'] = "" . __( 'Trash' ) . ""; if ( 'trash' == $post->post_status || !EMPTY_TRASH_DAYS ) $actions['delete'] = "" . __( 'Delete Permanently' ) . ""; } if ( in_array( $post->post_status, array( 'pending', 'draft' ) ) ) { if ( $can_edit_post ) $actions['view'] = '' . __( 'Preview' ) . ''; } elseif ( 'trash' != $post->post_status ) { $actions['view'] = '' . __( 'View' ) . ''; } $actions = apply_filters( is_post_type_hierarchical( $post->post_type ) ? 'page_row_actions' : 'post_row_actions', $actions, $post ); echo $this->row_actions( $actions ); get_inline_data( $post ); echo ''; if ( 'excerpt' == $mode ) echo apply_filters( 'post_date_column_time', $t_time, $post, $column_name, $mode ); else echo '' . apply_filters( 'post_date_column_time', $h_time, $post, $column_name, $mode ) . ''; echo '
'; if ( 'publish' == $post->post_status ) { _e( 'Published' ); } elseif ( 'future' == $post->post_status ) { if ( $time_diff > 0 ) echo '' . __( 'Missed schedule' ) . ''; else _e( 'Scheduled' ); } else { _e( 'Last Modified' ); } echo '
>%s', esc_url( add_query_arg( array( 'post_type' => $post->post_type, 'category_name' => $c->slug ), 'edit.php' ) ), esc_html( sanitize_term_field( 'name', $c->name, $c->term_id, 'category', 'display' ) ) ); } echo join( ', ', $out ); } else { _e( 'Uncategorized' ); } ?> >ID ); if ( !empty( $tags ) ) { $out = array(); foreach ( $tags as $c ) { $out[] = sprintf( '%s', esc_url( add_query_arg( array( 'post_type' => $post->post_type, 'tag' => $c->slug ), 'edit.php' ) ), esc_html( sanitize_term_field( 'name', $c->name, $c->term_id, 'tag', 'display' ) ) ); } echo join( ', ', $out ); } else { _e( 'No Tags' ); } ?> >
comment_pending_count[$post->ID] ) ? $this->comment_pending_count[$post->ID] : 0; $this->comments_bubble( $post->ID, $pending_comments ); ?>
>%s', esc_url( add_query_arg( array( 'post_type' => $post->post_type, 'author' => get_the_author_meta( 'ID' ) ), 'edit.php' )), get_the_author() ); ?> >post_type ) ) do_action( 'manage_pages_custom_column', $column_name, $post->ID ); else do_action( 'manage_posts_custom_column', $column_name, $post->ID ); do_action( "manage_{$post->post_type}_posts_custom_column", $column_name, $post->ID ); ?>
post_type "; echo $bulk ? "bulk-edit-row bulk-edit-row-$hclass bulk-edit-$screen->post_type" : "quick-edit-row quick-edit-row-$hclass inline-edit-$screen->post_type"; ?>" style="display: none">

post_type, 'title' ) ) : if ( $bulk ) : ?>

post_type, 'author' ) ) : $authors_dropdown = ''; if ( is_super_admin() || current_user_can( $post_type_object->cap->edit_others_posts ) ) : $users_opt = array( 'hide_if_only_one_author' => false, 'who' => 'authors', 'name' => 'post_author', 'class'=> 'authors', 'multi' => 1, 'echo' => 0 ); if ( $bulk ) $users_opt['show_option_none'] = __( '— No Change —' ); if ( $authors = wp_dropdown_users( $users_opt ) ) : $authors_dropdown = ''; endif; endif; // authors ?>
labels->name ) ?>
    $taxonomy->name ) ) ?>
post_type, 'author' ) && $bulk ) echo $authors_dropdown; ?> hierarchical ) : ?> post_type, 'page-attributes' ) ) : if ( !$bulk ) : ?> hierarchical ?> post_type, 'comments' ) || post_type_supports( $screen->post_type, 'trackbacks' ) ) : if ( $bulk ) : ?>
post_type, 'comments' ) ) : ?> post_type, 'trackbacks' ) ) : ?>
post_type, 'comments' ) ) : ?> post_type, 'trackbacks' ) ) : ?>
post_type && $can_publish && current_user_can( $post_type_object->cap->edit_others_posts ) ) : ?>
get_column_info(); foreach ( $columns as $column_name => $column_display_name ) { if ( isset( $core_columns[$column_name] ) ) continue; do_action( $bulk ? 'bulk_edit_custom_box' : 'quick_edit_custom_box', $column_name, $screen->post_type ); } ?>

's' ) ); } ?>

wp-admin/includes/class-wp-terms-list-table.php0000644002347300047320000002606411656660347021404 0ustar vonfabpsacln true ) ) ) ) $post_type = 'post'; parent::WP_List_Table( array( 'plural' => 'tags', 'singular' => 'tag', ) ); } function ajax_user_can() { global $tax; return current_user_can( $tax->cap->manage_terms ); } function prepare_items() { global $taxonomy; $tags_per_page = $this->get_items_per_page( 'edit_' . $taxonomy . '_per_page' ); if ( 'post_tag' == $taxonomy ) { $tags_per_page = apply_filters( 'edit_tags_per_page', $tags_per_page ); $tags_per_page = apply_filters( 'tagsperpage', $tags_per_page ); // Old filter } elseif ( 'category' == $taxonomy ) { $tags_per_page = apply_filters( 'edit_categories_per_page', $tags_per_page ); // Old filter } $search = !empty( $_REQUEST['s'] ) ? trim( stripslashes( $_REQUEST['s'] ) ) : ''; $args = array( 'search' => $search, 'page' => $this->get_pagenum(), 'number' => $tags_per_page, ); if ( !empty( $_REQUEST['orderby'] ) ) $args['orderby'] = trim( stripslashes( $_REQUEST['orderby'] ) ); if ( !empty( $_REQUEST['order'] ) ) $args['order'] = trim( stripslashes( $_REQUEST['order'] ) ); $this->callback_args = $args; $this->set_pagination_args( array( 'total_items' => wp_count_terms( $taxonomy, compact( 'search' ) ), 'per_page' => $tags_per_page, ) ); } function has_items() { // todo: populate $this->items in prepare_items() return true; } function get_bulk_actions() { $actions = array(); $actions['delete'] = __( 'Delete' ); return $actions; } function current_action() { if ( isset( $_REQUEST['action'] ) && isset( $_REQUEST['delete_tags'] ) && ( 'delete' == $_REQUEST['action'] || 'delete' == $_REQUEST['action2'] ) ) return 'bulk-delete'; return parent::current_action(); } function get_columns() { global $taxonomy, $typenow; $columns = array( 'cb' => '', 'name' => __( 'Name' ), 'description' => __( 'Description' ), 'slug' => __( 'Slug' ), ); if ( 'link_category' == $taxonomy ) { $columns['links'] = __( 'Links' ); } else { $post_type = empty( $typenow ) ? 'post' : $typenow; $post_type_object = get_post_type_object( $post_type ); $columns['posts'] = $post_type_object ? $post_type_object->labels->name : __( 'Posts' ); } return $columns; } function get_sortable_columns() { return array( 'name' => 'name', 'description' => 'description', 'slug' => 'slug', 'posts' => 'count', 'links' => 'count' ); } function display_rows_or_placeholder() { global $taxonomy; $args = wp_parse_args( $this->callback_args, array( 'page' => 1, 'number' => 20, 'search' => '', 'hide_empty' => 0 ) ); extract( $args, EXTR_SKIP ); $args['offset'] = $offset = ( $page - 1 ) * $number; // convert it to table rows $out = ''; $count = 0; $terms = array(); if ( is_taxonomy_hierarchical( $taxonomy ) && !isset( $orderby ) ) { // We'll need the full set of terms then. $args['number'] = $args['offset'] = 0; $terms = get_terms( $taxonomy, $args ); if ( !empty( $search ) ) // Ignore children on searches. $children = array(); else $children = _get_term_hierarchy( $taxonomy ); // Some funky recursion to get the job done( Paging & parents mainly ) is contained within, Skip it for non-hierarchical taxonomies for performance sake $out .= $this->_rows( $taxonomy, $terms, $children, $offset, $number, $count ); } else { $terms = get_terms( $taxonomy, $args ); foreach ( $terms as $term ) $out .= $this->single_row( $term, 0, $taxonomy ); $count = $number; // Only displaying a single page. } if ( empty( $terms ) ) { list( $columns, $hidden ) = $this->get_column_info(); echo ''; $this->no_items(); echo ''; } else { echo $out; } } function _rows( $taxonomy, $terms, &$children, $start = 0, $per_page = 20, &$count, $parent = 0, $level = 0 ) { $end = $start + $per_page; $output = ''; foreach ( $terms as $key => $term ) { if ( $count >= $end ) break; if ( $term->parent != $parent && empty( $_REQUEST['s'] ) ) continue; // If the page starts in a subtree, print the parents. if ( $count == $start && $term->parent > 0 && empty( $_REQUEST['s'] ) ) { $my_parents = $parent_ids = array(); $p = $term->parent; while ( $p ) { $my_parent = get_term( $p, $taxonomy ); $my_parents[] = $my_parent; $p = $my_parent->parent; if ( in_array( $p, $parent_ids ) ) // Prevent parent loops. break; $parent_ids[] = $p; } unset( $parent_ids ); $num_parents = count( $my_parents ); while ( $my_parent = array_pop( $my_parents ) ) { $output .= "\t" . $this->single_row( $my_parent, $level - $num_parents, $taxonomy ); $num_parents--; } } if ( $count >= $start ) $output .= "\t" . $this->single_row( $term, $level, $taxonomy ); ++$count; unset( $terms[$key] ); if ( isset( $children[$term->term_id] ) && empty( $_REQUEST['s'] ) ) $output .= $this->_rows( $taxonomy, $terms, $children, $start, $per_page, $count, $term->term_id, $level + 1 ); } return $output; } function single_row( $tag, $level = 0 ) { static $row_class = ''; $row_class = ( $row_class == '' ? ' class="alternate"' : '' ); $this->level = $level; echo ''; echo $this->single_row_columns( $tag ); echo ''; } function column_cb( $tag ) { global $taxonomy, $tax; $default_term = get_option( 'default_' . $taxonomy ); if ( current_user_can( $tax->cap->delete_terms ) && $tag->term_id != $default_term ) return ''; else return ' '; } function column_name( $tag ) { global $taxonomy, $tax, $post_type; $default_term = get_option( 'default_' . $taxonomy ); $pad = str_repeat( '— ', max( 0, $this->level ) ); $name = apply_filters( 'term_name', $pad . ' ' . $tag->name, $tag ); $qe_data = get_term( $tag->term_id, $taxonomy, OBJECT, 'edit' ); $edit_link = get_edit_term_link( $tag->term_id, $taxonomy, $post_type ); $out = '' . $name . '
'; $actions = array(); if ( current_user_can( $tax->cap->edit_terms ) ) { $actions['edit'] = '' . __( 'Edit' ) . ''; $actions['inline hide-if-no-js'] = '' . __( 'Quick Edit' ) . ''; } if ( current_user_can( $tax->cap->delete_terms ) && $tag->term_id != $default_term ) $actions['delete'] = "term_id ) . "'>" . __( 'Delete' ) . ""; $actions = apply_filters( 'tag_row_actions', $actions, $tag ); $actions = apply_filters( "{$taxonomy}_row_actions", $actions, $tag ); $out .= $this->row_actions( $actions ); $out .= ''; return $out; } function column_description( $tag ) { return $tag->description; } function column_slug( $tag ) { return apply_filters( 'editable_slug', $tag->slug ); } function column_posts( $tag ) { global $taxonomy, $post_type; $count = number_format_i18n( $tag->count ); $tax = get_taxonomy( $taxonomy ); if ( ! $tax->public ) return $count; if ( $tax->query_var ) { $args = array( $tax->query_var => $tag->slug ); } else { $args = array( 'taxonomy' => $tax->name, 'term' => $tag->slug ); } $args['post_type'] = $post_type; return "$count"; } function column_links( $tag ) { $count = number_format_i18n( $tag->count ); if ( $count ) $count = "$count"; return $count; } function column_default( $tag, $column_name ) { $screen = get_current_screen(); return apply_filters( "manage_{$screen->taxonomy}_custom_column", '', $column_name, $tag->term_id ); } /** * Outputs the hidden row displayed when inline editing * * @since 3.1.0 */ function inline_edit() { global $tax; if ( ! current_user_can( $tax->cap->edit_terms ) ) return; ?>
wp-admin/includes/class-wp-theme-install-list-table.php0000644002347300047320000001215511656660347023014 0ustar vonfabpsaclnget_pagenum(); $per_page = 30; // These are the tabs which are shown on the page, $tabs = array(); $tabs['dashboard'] = __( 'Search' ); if ( 'search' == $tab ) $tabs['search'] = __( 'Search Results' ); $tabs['upload'] = __( 'Upload' ); $tabs['featured'] = _x( 'Featured','Theme Installer' ); //$tabs['popular'] = _x( 'Popular','Theme Installer' ); $tabs['new'] = _x( 'Newest','Theme Installer' ); $tabs['updated'] = _x( 'Recently Updated','Theme Installer' ); $nonmenu_tabs = array( 'theme-information' ); // Valid actions to perform which do not have a Menu item. $tabs = apply_filters( 'install_themes_tabs', $tabs ); $nonmenu_tabs = apply_filters( 'install_themes_nonmenu_tabs', $nonmenu_tabs ); // If a non-valid menu tab has been selected, And its not a non-menu action. if ( empty( $tab ) || ( ! isset( $tabs[ $tab ] ) && ! in_array( $tab, (array) $nonmenu_tabs ) ) ) $tab = key( $tabs ); $args = array( 'page' => $paged, 'per_page' => $per_page, 'fields' => $theme_field_defaults ); switch ( $tab ) { case 'search': $type = isset( $_REQUEST['type'] ) ? stripslashes( $_REQUEST['type'] ) : ''; $term = isset( $_REQUEST['s'] ) ? stripslashes( $_REQUEST['s'] ) : ''; switch ( $type ) { case 'tag': $terms = explode( ',', $term ); $terms = array_map( 'trim', $terms ); $terms = array_map( 'sanitize_title_with_dashes', $terms ); $args['tag'] = $terms; break; case 'term': $args['search'] = $term; break; case 'author': $args['author'] = $term; break; } if ( !empty( $_POST['features'] ) ) { $terms = $_POST['features']; $terms = array_map( 'trim', $terms ); $terms = array_map( 'sanitize_title_with_dashes', $terms ); $args['tag'] = $terms; $_REQUEST['s'] = implode( ',', $terms ); $_REQUEST['type'] = 'tag'; } add_action( 'install_themes_table_header', 'install_theme_search_form' ); break; case 'featured': //case 'popular': case 'new': case 'updated': $args['browse'] = $tab; break; default: $args = false; } if ( !$args ) return; $api = themes_api( 'query_themes', $args ); if ( is_wp_error( $api ) ) wp_die( $api->get_error_message() . '

' . __( 'Try again' ) . '' ); $this->items = $api->themes; $this->set_pagination_args( array( 'total_items' => $api->info['results'], 'per_page' => $per_page, ) ); } function no_items() { _e( 'No themes match your request.' ); } function get_views() { global $tabs, $tab; $display_tabs = array(); foreach ( (array) $tabs as $action => $text ) { $class = ( $action == $tab ) ? ' class="current"' : ''; $href = self_admin_url('theme-install.php?tab=' . $action); $display_tabs['theme-install-'.$action] = "$text"; } return $display_tabs; } function get_columns() { return array(); } function display() { // wp_nonce_field( "fetch-list-" . get_class( $this ), '_ajax_fetch_list_nonce' ); ?>

pagination( 'top' ); ?>
display_rows_or_placeholder(); ?>
pagination( 'bottom' ); ?>
items; $rows = ceil( count( $themes ) / 3 ); $table = array(); $theme_keys = array_keys( $themes ); for ( $row = 1; $row <= $rows; $row++ ) for ( $col = 1; $col <= 3; $col++ ) $table[$row][$col] = array_shift( $theme_keys ); foreach ( $table as $row => $cols ) { echo "\t\n"; foreach ( $cols as $col => $theme_index ) { $class = array( 'available-theme' ); if ( $row == 1 ) $class[] = 'top'; if ( $col == 1 ) $class[] = 'left'; if ( $row == $rows ) $class[] = 'bottom'; if ( $col == 3 ) $class[] = 'right'; ?> \n"; } // end foreach $table } } ?> wp-admin/includes/class-wp-themes-list-table.php0000644002347300047320000002217411656660347021535 0ustar vonfabpsaclnsearch = array_merge( $this->search, array_filter( array_map( 'trim', explode( ',', $search ) ) ) ); $this->search = array_unique( $this->search ); } if ( !empty( $_REQUEST['features'] ) ) { $this->features = $_REQUEST['features']; $this->features = array_map( 'trim', $this->features ); $this->features = array_map( 'sanitize_title_with_dashes', $this->features ); $this->features = array_unique( $this->features ); } if ( $this->search || $this->features ) { foreach ( $themes as $key => $theme ) { if ( !$this->search_theme( $theme ) ) unset( $themes[ $key ] ); } } unset( $themes[$ct->name] ); uksort( $themes, "strnatcasecmp" ); $per_page = 15; $page = $this->get_pagenum(); $start = ( $page - 1 ) * $per_page; $this->items = array_slice( $themes, $start, $per_page ); $this->set_pagination_args( array( 'total_items' => count( $themes ), 'per_page' => $per_page, ) ); } function no_items() { if ( $this->search || $this->features ) { _e( 'No items found.' ); return; } if ( is_multisite() ) { if ( current_user_can( 'install_themes' ) && current_user_can( 'manage_network_themes' ) ) { printf( __( 'You only have one theme enabled for this site right now. Visit the Network Admin to enable or install more themes.' ), network_admin_url( 'site-themes.php?id=' . $GLOBALS['blog_id'] ), network_admin_url( 'theme-install.php' ) ); return; } elseif ( current_user_can( 'manage_network_themes' ) ) { printf( __( 'You only have one theme enabled for this site right now. Visit the Network Admin to enable more themes.' ), network_admin_url( 'site-themes.php?id=' . $GLOBALS['blog_id'] ) ); return; } // else, fallthrough. install_themes doesn't help if you can't enable it. } else { if ( current_user_can( 'install_themes' ) ) { printf( __( 'You only have one theme installed right now. Live a little! You can choose from over 1,000 free themes in the WordPress.org Theme Directory at any time: just click on the Install Themes tab above.' ), admin_url( 'theme-install.php' ) ); return; } } // Fallthrough. printf( __( 'Only the current theme is available to you. Contact the %s administrator for information about accessing additional themes.' ), get_site_option( 'site_name' ) ); } function tablenav( $which = 'top' ) { if ( $this->get_pagination_arg( 'total_pages' ) <= 1 ) return; ?>
pagination( $which ); ?>
tablenav( 'top' ); ?> display_rows_or_placeholder(); ?>
tablenav( 'bottom' ); ?> items; $theme_names = array_keys( $themes ); natcasesort( $theme_names ); $table = array(); $rows = ceil( count( $theme_names ) / 3 ); for ( $row = 1; $row <= $rows; $row++ ) for ( $col = 1; $col <= 3; $col++ ) $table[$row][$col] = array_shift( $theme_names ); foreach ( $table as $row => $cols ) { ?> $theme_name ) { $class = array( 'available-theme' ); if ( $row == 1 ) $class[] = 'top'; if ( $col == 1 ) $class[] = 'left'; if ( $row == $rows ) $class[] = 'bottom'; if ( $col == 3 ) $class[] = 'right'; ?> 1, 'template' => $template, 'stylesheet' => $stylesheet, 'preview_iframe' => true, 'TB_iframe' => 'true' ), $preview_link ) ); $preview_text = esc_attr( sprintf( __( 'Preview of “%s”' ), $title ) ); $tags = $themes[$theme_name]['Tags']; $thickbox_class = 'thickbox thickbox-preview'; $activate_link = wp_nonce_url( "themes.php?action=activate&template=".urlencode( $template )."&stylesheet=".urlencode( $stylesheet ), 'switch-theme_' . $template ); $activate_text = esc_attr( sprintf( __( 'Activate “%s”' ), $title ) ); $actions = array(); $actions[] = '' . __( 'Activate' ) . ''; $actions[] = '' . __( 'Preview' ) . ''; if ( ! is_multisite() && current_user_can( 'delete_themes' ) ) $actions[] = '' . __( 'Delete' ) . ''; $actions = apply_filters( 'theme_action_links', $actions, $themes[$theme_name] ); $actions = implode ( ' | ', $actions ); ?>

%2$s. The stylesheet files are located in %3$s. %4$s uses templates from %5$s. Changes made to the templates will affect both themes.' ), $title, str_replace( WP_CONTENT_DIR, '', $template_dir ), str_replace( WP_CONTENT_DIR, '', $stylesheet_dir ), $title, $parent_theme ); ?>

%2$s.' ), $title, str_replace( WP_CONTENT_DIR, '', $template_dir ), str_replace( WP_CONTENT_DIR, '', $stylesheet_dir ) ); ?>

search ) > 0 ) { foreach ( $this->search as $word ) { $matched = 0; // In a tag? if ( in_array( $word, array_map( 'sanitize_title_with_dashes', $theme['Tags'] ) ) ) $matched = 1; // In one of the fields? foreach ( array( 'Name', 'Title', 'Description', 'Author', 'Template', 'Stylesheet' ) AS $field ) { if ( stripos( $theme[$field], $word ) !== false ) $matched++; } if ( $matched == 0 ) return false; } } // Now search the features if ( count( $this->features ) > 0 ) { foreach ( $this->features as $word ) { // In a tag? if ( !in_array( $word, array_map( 'sanitize_title_with_dashes', $theme['Tags'] ) ) ) return false; } } // Only get here if each word exists in the tags or one of the fields return true; } } ?> wp-admin/includes/class-wp-upgrader.php0000644002347300047320000014371111656660347020024 0ustar vonfabpsacln__construct($skin); } function __construct($skin = null) { if ( null == $skin ) $this->skin = new WP_Upgrader_Skin(); else $this->skin = $skin; } function init() { $this->skin->set_upgrader($this); $this->generic_strings(); } function generic_strings() { $this->strings['bad_request'] = __('Invalid Data provided.'); $this->strings['fs_unavailable'] = __('Could not access filesystem.'); $this->strings['fs_error'] = __('Filesystem error.'); $this->strings['fs_no_root_dir'] = __('Unable to locate WordPress Root directory.'); $this->strings['fs_no_content_dir'] = __('Unable to locate WordPress Content directory (wp-content).'); $this->strings['fs_no_plugins_dir'] = __('Unable to locate WordPress Plugin directory.'); $this->strings['fs_no_themes_dir'] = __('Unable to locate WordPress Theme directory.'); /* translators: %s: directory name */ $this->strings['fs_no_folder'] = __('Unable to locate needed folder (%s).'); $this->strings['download_failed'] = __('Download failed.'); $this->strings['installing_package'] = __('Installing the latest version…'); $this->strings['folder_exists'] = __('Destination folder already exists.'); $this->strings['mkdir_failed'] = __('Could not create directory.'); $this->strings['bad_package'] = __('Incompatible Archive.'); $this->strings['maintenance_start'] = __('Enabling Maintenance mode…'); $this->strings['maintenance_end'] = __('Disabling Maintenance mode…'); } function fs_connect( $directories = array() ) { global $wp_filesystem; if ( false === ($credentials = $this->skin->request_filesystem_credentials()) ) return false; if ( ! WP_Filesystem($credentials) ) { $error = true; if ( is_object($wp_filesystem) && $wp_filesystem->errors->get_error_code() ) $error = $wp_filesystem->errors; $this->skin->request_filesystem_credentials($error); //Failed to connect, Error and request again return false; } if ( ! is_object($wp_filesystem) ) return new WP_Error('fs_unavailable', $this->strings['fs_unavailable'] ); if ( is_wp_error($wp_filesystem->errors) && $wp_filesystem->errors->get_error_code() ) return new WP_Error('fs_error', $this->strings['fs_error'], $wp_filesystem->errors); foreach ( (array)$directories as $dir ) { switch ( $dir ) { case ABSPATH: if ( ! $wp_filesystem->abspath() ) return new WP_Error('fs_no_root_dir', $this->strings['fs_no_root_dir']); break; case WP_CONTENT_DIR: if ( ! $wp_filesystem->wp_content_dir() ) return new WP_Error('fs_no_content_dir', $this->strings['fs_no_content_dir']); break; case WP_PLUGIN_DIR: if ( ! $wp_filesystem->wp_plugins_dir() ) return new WP_Error('fs_no_plugins_dir', $this->strings['fs_no_plugins_dir']); break; case WP_CONTENT_DIR . '/themes': if ( ! $wp_filesystem->find_folder(WP_CONTENT_DIR . '/themes') ) return new WP_Error('fs_no_themes_dir', $this->strings['fs_no_themes_dir']); break; default: if ( ! $wp_filesystem->find_folder($dir) ) return new WP_Error('fs_no_folder', sprintf($this->strings['fs_no_folder'], $dir)); break; } } return true; } //end fs_connect(); function download_package($package) { if ( ! preg_match('!^(http|https|ftp)://!i', $package) && file_exists($package) ) //Local file or remote? return $package; //must be a local file.. if ( empty($package) ) return new WP_Error('no_package', $this->strings['no_package']); $this->skin->feedback('downloading_package', $package); $download_file = download_url($package); if ( is_wp_error($download_file) ) return new WP_Error('download_failed', $this->strings['download_failed'], $download_file->get_error_message()); return $download_file; } function unpack_package($package, $delete_package = true) { global $wp_filesystem; $this->skin->feedback('unpack_package'); $upgrade_folder = $wp_filesystem->wp_content_dir() . 'upgrade/'; //Clean up contents of upgrade directory beforehand. $upgrade_files = $wp_filesystem->dirlist($upgrade_folder); if ( !empty($upgrade_files) ) { foreach ( $upgrade_files as $file ) $wp_filesystem->delete($upgrade_folder . $file['name'], true); } //We need a working directory $working_dir = $upgrade_folder . basename($package, '.zip'); // Clean up working directory if ( $wp_filesystem->is_dir($working_dir) ) $wp_filesystem->delete($working_dir, true); // Unzip package to working directory $result = unzip_file($package, $working_dir); //TODO optimizations, Copy when Move/Rename would suffice? // Once extracted, delete the package if required. if ( $delete_package ) unlink($package); if ( is_wp_error($result) ) { $wp_filesystem->delete($working_dir, true); return $result; } return $working_dir; } function install_package($args = array()) { global $wp_filesystem; $defaults = array( 'source' => '', 'destination' => '', //Please always pass these 'clear_destination' => false, 'clear_working' => false, 'hook_extra' => array()); $args = wp_parse_args($args, $defaults); extract($args); @set_time_limit( 300 ); if ( empty($source) || empty($destination) ) return new WP_Error('bad_request', $this->strings['bad_request']); $this->skin->feedback('installing_package'); $res = apply_filters('upgrader_pre_install', true, $hook_extra); if ( is_wp_error($res) ) return $res; //Retain the Original source and destinations $remote_source = $source; $local_destination = $destination; $source_files = array_keys( $wp_filesystem->dirlist($remote_source) ); $remote_destination = $wp_filesystem->find_folder($local_destination); //Locate which directory to copy to the new folder, This is based on the actual folder holding the files. if ( 1 == count($source_files) && $wp_filesystem->is_dir( trailingslashit($source) . $source_files[0] . '/') ) //Only one folder? Then we want its contents. $source = trailingslashit($source) . trailingslashit($source_files[0]); elseif ( count($source_files) == 0 ) return new WP_Error('bad_package', $this->strings['bad_package']); //There are no files? //else //Its only a single file, The upgrader will use the foldername of this file as the destination folder. foldername is based on zip filename. //Hook ability to change the source file location.. $source = apply_filters('upgrader_source_selection', $source, $remote_source, $this); if ( is_wp_error($source) ) return $source; //Has the source location changed? If so, we need a new source_files list. if ( $source !== $remote_source ) $source_files = array_keys( $wp_filesystem->dirlist($source) ); //Protection against deleting files in any important base directories. if ( in_array( $destination, array(ABSPATH, WP_CONTENT_DIR, WP_PLUGIN_DIR, WP_CONTENT_DIR . '/themes') ) ) { $remote_destination = trailingslashit($remote_destination) . trailingslashit(basename($source)); $destination = trailingslashit($destination) . trailingslashit(basename($source)); } if ( $wp_filesystem->exists($remote_destination) ) { if ( $clear_destination ) { //We're going to clear the destination if theres something there $this->skin->feedback('remove_old'); $removed = $wp_filesystem->delete($remote_destination, true); $removed = apply_filters('upgrader_clear_destination', $removed, $local_destination, $remote_destination, $hook_extra); if ( is_wp_error($removed) ) return $removed; else if ( ! $removed ) return new WP_Error('remove_old_failed', $this->strings['remove_old_failed']); } else { //If we're not clearing the destination folder and something exists there allready, Bail. //But first check to see if there are actually any files in the folder. $_files = $wp_filesystem->dirlist($remote_destination); if ( ! empty($_files) ) { $wp_filesystem->delete($remote_source, true); //Clear out the source files. return new WP_Error('folder_exists', $this->strings['folder_exists'], $remote_destination ); } } } //Create destination if needed if ( !$wp_filesystem->exists($remote_destination) ) if ( !$wp_filesystem->mkdir($remote_destination, FS_CHMOD_DIR) ) return new WP_Error('mkdir_failed', $this->strings['mkdir_failed'], $remote_destination); // Copy new version of item into place. $result = copy_dir($source, $remote_destination); if ( is_wp_error($result) ) { if ( $clear_working ) $wp_filesystem->delete($remote_source, true); return $result; } //Clear the Working folder? if ( $clear_working ) $wp_filesystem->delete($remote_source, true); $destination_name = basename( str_replace($local_destination, '', $destination) ); if ( '.' == $destination_name ) $destination_name = ''; $this->result = compact('local_source', 'source', 'source_name', 'source_files', 'destination', 'destination_name', 'local_destination', 'remote_destination', 'clear_destination', 'delete_source_dir'); $res = apply_filters('upgrader_post_install', true, $hook_extra, $this->result); if ( is_wp_error($res) ) { $this->result = $res; return $res; } //Bombard the calling function will all the info which we've just used. return $this->result; } function run($options) { $defaults = array( 'package' => '', //Please always pass this. 'destination' => '', //And this 'clear_destination' => false, 'clear_working' => true, 'is_multi' => false, 'hook_extra' => array() //Pass any extra $hook_extra args here, this will be passed to any hooked filters. ); $options = wp_parse_args($options, $defaults); extract($options); //Connect to the Filesystem first. $res = $this->fs_connect( array(WP_CONTENT_DIR, $destination) ); if ( ! $res ) //Mainly for non-connected filesystem. return false; if ( is_wp_error($res) ) { $this->skin->error($res); return $res; } if ( !$is_multi ) // call $this->header separately if running multiple times $this->skin->header(); $this->skin->before(); //Download the package (Note, This just returns the filename of the file if the package is a local file) $download = $this->download_package( $package ); if ( is_wp_error($download) ) { $this->skin->error($download); $this->skin->after(); return $download; } //Unzip's the file into a temporary directory $working_dir = $this->unpack_package( $download ); if ( is_wp_error($working_dir) ) { $this->skin->error($working_dir); $this->skin->after(); return $working_dir; } //With the given options, this installs it to the destination directory. $result = $this->install_package( array( 'source' => $working_dir, 'destination' => $destination, 'clear_destination' => $clear_destination, 'clear_working' => $clear_working, 'hook_extra' => $hook_extra ) ); $this->skin->set_result($result); if ( is_wp_error($result) ) { $this->skin->error($result); $this->skin->feedback('process_failed'); } else { //Install Suceeded $this->skin->feedback('process_success'); } $this->skin->after(); if ( !$is_multi ) $this->skin->footer(); return $result; } function maintenance_mode($enable = false) { global $wp_filesystem; $file = $wp_filesystem->abspath() . '.maintenance'; if ( $enable ) { $this->skin->feedback('maintenance_start'); // Create maintenance file to signal that we are upgrading $maintenance_string = ''; $wp_filesystem->delete($file); $wp_filesystem->put_contents($file, $maintenance_string, FS_CHMOD_FILE); } else if ( !$enable && $wp_filesystem->exists($file) ) { $this->skin->feedback('maintenance_end'); $wp_filesystem->delete($file); } } } /** * Plugin Upgrader class for WordPress Plugins, It is designed to upgrade/install plugins from a local zip, remote zip URL, or uploaded zip file. * * @TODO More Detailed docs, for methods as well. * * @package WordPress * @subpackage Upgrader * @since 2.8.0 */ class Plugin_Upgrader extends WP_Upgrader { var $result; var $bulk = false; var $show_before = ''; function upgrade_strings() { $this->strings['up_to_date'] = __('The plugin is at the latest version.'); $this->strings['no_package'] = __('Update package not available.'); $this->strings['downloading_package'] = __('Downloading update from %s…'); $this->strings['unpack_package'] = __('Unpacking the update…'); $this->strings['deactivate_plugin'] = __('Deactivating the plugin…'); $this->strings['remove_old'] = __('Removing the old version of the plugin…'); $this->strings['remove_old_failed'] = __('Could not remove the old plugin.'); $this->strings['process_failed'] = __('Plugin update failed.'); $this->strings['process_success'] = __('Plugin updated successfully.'); } function install_strings() { $this->strings['no_package'] = __('Install package not available.'); $this->strings['downloading_package'] = __('Downloading install package from %s…'); $this->strings['unpack_package'] = __('Unpacking the package…'); $this->strings['installing_package'] = __('Installing the plugin…'); $this->strings['process_failed'] = __('Plugin install failed.'); $this->strings['process_success'] = __('Plugin installed successfully.'); } function install($package) { $this->init(); $this->install_strings(); $this->run(array( 'package' => $package, 'destination' => WP_PLUGIN_DIR, 'clear_destination' => false, //Do not overwrite files. 'clear_working' => true, 'hook_extra' => array() )); // Force refresh of plugin update information delete_site_transient('update_plugins'); } function upgrade($plugin) { $this->init(); $this->upgrade_strings(); $current = get_site_transient( 'update_plugins' ); if ( !isset( $current->response[ $plugin ] ) ) { $this->skin->before(); $this->skin->set_result(false); $this->skin->error('up_to_date'); $this->skin->after(); return false; } // Get the URL to the zip file $r = $current->response[ $plugin ]; add_filter('upgrader_pre_install', array(&$this, 'deactivate_plugin_before_upgrade'), 10, 2); add_filter('upgrader_clear_destination', array(&$this, 'delete_old_plugin'), 10, 4); //'source_selection' => array(&$this, 'source_selection'), //theres a track ticket to move up the directory for zip's which are made a bit differently, useful for non-.org plugins. $this->run(array( 'package' => $r->package, 'destination' => WP_PLUGIN_DIR, 'clear_destination' => true, 'clear_working' => true, 'hook_extra' => array( 'plugin' => $plugin ) )); // Cleanup our hooks, incase something else does a upgrade on this connection. remove_filter('upgrader_pre_install', array(&$this, 'deactivate_plugin_before_upgrade')); remove_filter('upgrader_clear_destination', array(&$this, 'delete_old_plugin')); if ( ! $this->result || is_wp_error($this->result) ) return $this->result; // Force refresh of plugin update information delete_site_transient('update_plugins'); } function bulk_upgrade($plugins) { $this->init(); $this->bulk = true; $this->upgrade_strings(); $current = get_site_transient( 'update_plugins' ); add_filter('upgrader_clear_destination', array(&$this, 'delete_old_plugin'), 10, 4); $this->skin->header(); // Connect to the Filesystem first. $res = $this->fs_connect( array(WP_CONTENT_DIR, WP_PLUGIN_DIR) ); if ( ! $res ) { $this->skin->footer(); return false; } $this->skin->bulk_header(); // Only start maintenance mode if running in Multisite OR the plugin is in use $maintenance = is_multisite(); // @TODO: This should only kick in for individual sites if at all possible. foreach ( $plugins as $plugin ) $maintenance = $maintenance || (is_plugin_active($plugin) && isset($current->response[ $plugin ]) ); // Only activate Maintenance mode if a plugin is active AND has an update available if ( $maintenance ) $this->maintenance_mode(true); $results = array(); $this->update_count = count($plugins); $this->update_current = 0; foreach ( $plugins as $plugin ) { $this->update_current++; $this->skin->plugin_info = get_plugin_data( WP_PLUGIN_DIR . '/' . $plugin, false, true); if ( !isset( $current->response[ $plugin ] ) ) { $this->skin->set_result(false); $this->skin->before(); $this->skin->error('up_to_date'); $this->skin->after(); $results[$plugin] = false; continue; } // Get the URL to the zip file $r = $current->response[ $plugin ]; $this->skin->plugin_active = is_plugin_active($plugin); $result = $this->run(array( 'package' => $r->package, 'destination' => WP_PLUGIN_DIR, 'clear_destination' => true, 'clear_working' => true, 'is_multi' => true, 'hook_extra' => array( 'plugin' => $plugin ) )); $results[$plugin] = $this->result; // Prevent credentials auth screen from displaying multiple times if ( false === $result ) break; } //end foreach $plugins $this->maintenance_mode(false); $this->skin->bulk_footer(); $this->skin->footer(); // Cleanup our hooks, incase something else does a upgrade on this connection. remove_filter('upgrader_clear_destination', array(&$this, 'delete_old_plugin')); // Force refresh of plugin update information delete_site_transient('update_plugins'); return $results; } //return plugin info. function plugin_info() { if ( ! is_array($this->result) ) return false; if ( empty($this->result['destination_name']) ) return false; $plugin = get_plugins('/' . $this->result['destination_name']); //Ensure to pass with leading slash if ( empty($plugin) ) return false; $pluginfiles = array_keys($plugin); //Assume the requested plugin is the first in the list return $this->result['destination_name'] . '/' . $pluginfiles[0]; } //Hooked to pre_install function deactivate_plugin_before_upgrade($return, $plugin) { if ( is_wp_error($return) ) //Bypass. return $return; $plugin = isset($plugin['plugin']) ? $plugin['plugin'] : ''; if ( empty($plugin) ) return new WP_Error('bad_request', $this->strings['bad_request']); if ( is_plugin_active($plugin) ) { $this->skin->feedback('deactivate_plugin'); //Deactivate the plugin silently, Prevent deactivation hooks from running. deactivate_plugins($plugin, true); } } //Hooked to upgrade_clear_destination function delete_old_plugin($removed, $local_destination, $remote_destination, $plugin) { global $wp_filesystem; if ( is_wp_error($removed) ) return $removed; //Pass errors through. $plugin = isset($plugin['plugin']) ? $plugin['plugin'] : ''; if ( empty($plugin) ) return new WP_Error('bad_request', $this->strings['bad_request']); $plugins_dir = $wp_filesystem->wp_plugins_dir(); $this_plugin_dir = trailingslashit( dirname($plugins_dir . $plugin) ); if ( ! $wp_filesystem->exists($this_plugin_dir) ) //If its already vanished. return $removed; // If plugin is in its own directory, recursively delete the directory. if ( strpos($plugin, '/') && $this_plugin_dir != $plugins_dir ) //base check on if plugin includes directory seperator AND that its not the root plugin folder $deleted = $wp_filesystem->delete($this_plugin_dir, true); else $deleted = $wp_filesystem->delete($plugins_dir . $plugin); if ( ! $deleted ) return new WP_Error('remove_old_failed', $this->strings['remove_old_failed']); return $removed; } } /** * Theme Upgrader class for WordPress Themes, It is designed to upgrade/install themes from a local zip, remote zip URL, or uploaded zip file. * * @TODO More Detailed docs, for methods as well. * * @package WordPress * @subpackage Upgrader * @since 2.8.0 */ class Theme_Upgrader extends WP_Upgrader { var $result; function upgrade_strings() { $this->strings['up_to_date'] = __('The theme is at the latest version.'); $this->strings['no_package'] = __('Update package not available.'); $this->strings['downloading_package'] = __('Downloading update from %s…'); $this->strings['unpack_package'] = __('Unpacking the update…'); $this->strings['remove_old'] = __('Removing the old version of the theme…'); $this->strings['remove_old_failed'] = __('Could not remove the old theme.'); $this->strings['process_failed'] = __('Theme update failed.'); $this->strings['process_success'] = __('Theme updated successfully.'); } function install_strings() { $this->strings['no_package'] = __('Install package not available.'); $this->strings['downloading_package'] = __('Downloading install package from %s…'); $this->strings['unpack_package'] = __('Unpacking the package…'); $this->strings['installing_package'] = __('Installing the theme…'); $this->strings['process_failed'] = __('Theme install failed.'); $this->strings['process_success'] = __('Theme installed successfully.'); } function install($package) { $this->init(); $this->install_strings(); $options = array( 'package' => $package, 'destination' => WP_CONTENT_DIR . '/themes', 'clear_destination' => false, //Do not overwrite files. 'clear_working' => true ); $this->run($options); if ( ! $this->result || is_wp_error($this->result) ) return $this->result; // Force refresh of theme update information delete_site_transient('update_themes'); if ( empty($result['destination_name']) ) return false; else return $result['destination_name']; } function upgrade($theme) { $this->init(); $this->upgrade_strings(); // Is an update available? $current = get_site_transient( 'update_themes' ); if ( !isset( $current->response[ $theme ] ) ) { $this->skin->before(); $this->skin->set_result(false); $this->skin->error('up_to_date'); $this->skin->after(); return false; } $r = $current->response[ $theme ]; add_filter('upgrader_pre_install', array(&$this, 'current_before'), 10, 2); add_filter('upgrader_post_install', array(&$this, 'current_after'), 10, 2); add_filter('upgrader_clear_destination', array(&$this, 'delete_old_theme'), 10, 4); $options = array( 'package' => $r['package'], 'destination' => WP_CONTENT_DIR . '/themes', 'clear_destination' => true, 'clear_working' => true, 'hook_extra' => array( 'theme' => $theme ) ); $this->run($options); if ( ! $this->result || is_wp_error($this->result) ) return $this->result; // Force refresh of theme update information delete_site_transient('update_themes'); return true; } function bulk_upgrade($themes) { $this->init(); $this->bulk = true; $this->upgrade_strings(); $current = get_site_transient( 'update_themes' ); add_filter('upgrader_pre_install', array(&$this, 'current_before'), 10, 2); add_filter('upgrader_post_install', array(&$this, 'current_after'), 10, 2); add_filter('upgrader_clear_destination', array(&$this, 'delete_old_theme'), 10, 4); $this->skin->header(); // Connect to the Filesystem first. $res = $this->fs_connect( array(WP_CONTENT_DIR) ); if ( ! $res ) { $this->skin->footer(); return false; } $this->skin->bulk_header(); // Only start maintenance mode if running in Multisite OR the theme is in use $maintenance = is_multisite(); // @TODO: This should only kick in for individual sites if at all possible. foreach ( $themes as $theme ) $maintenance = $maintenance || $theme == get_stylesheet() || $theme == get_template(); if ( $maintenance ) $this->maintenance_mode(true); $results = array(); $this->update_count = count($themes); $this->update_current = 0; foreach ( $themes as $theme ) { $this->update_current++; if ( !isset( $current->response[ $theme ] ) ) { $this->skin->set_result(false); $this->skin->before(); $this->skin->error('up_to_date'); $this->skin->after(); $results[$theme] = false; continue; } $this->skin->theme_info = $this->theme_info($theme); // Get the URL to the zip file $r = $current->response[ $theme ]; $options = array( 'package' => $r['package'], 'destination' => WP_CONTENT_DIR . '/themes', 'clear_destination' => true, 'clear_working' => true, 'hook_extra' => array( 'theme' => $theme ) ); $result = $this->run($options); $results[$theme] = $this->result; // Prevent credentials auth screen from displaying multiple times if ( false === $result ) break; } //end foreach $plugins $this->maintenance_mode(false); $this->skin->bulk_footer(); $this->skin->footer(); // Cleanup our hooks, incase something else does a upgrade on this connection. remove_filter('upgrader_pre_install', array(&$this, 'current_before'), 10, 2); remove_filter('upgrader_post_install', array(&$this, 'current_after'), 10, 2); remove_filter('upgrader_clear_destination', array(&$this, 'delete_old_theme'), 10, 4); // Force refresh of theme update information delete_site_transient('update_themes'); return $results; } function current_before($return, $theme) { if ( is_wp_error($return) ) return $return; $theme = isset($theme['theme']) ? $theme['theme'] : ''; if ( $theme != get_stylesheet() ) //If not current return $return; //Change to maintenance mode now. if ( ! $this->bulk ) $this->maintenance_mode(true); return $return; } function current_after($return, $theme) { if ( is_wp_error($return) ) return $return; $theme = isset($theme['theme']) ? $theme['theme'] : ''; if ( $theme != get_stylesheet() ) //If not current return $return; //Ensure stylesheet name hasnt changed after the upgrade: // @TODO: Note, This doesnt handle the Template changing, or the Template name changing. if ( $theme == get_stylesheet() && $theme != $this->result['destination_name'] ) { $theme_info = $this->theme_info(); $stylesheet = $this->result['destination_name']; $template = !empty($theme_info['Template']) ? $theme_info['Template'] : $stylesheet; switch_theme($template, $stylesheet, true); } //Time to remove maintenance mode if ( ! $this->bulk ) $this->maintenance_mode(false); return $return; } function delete_old_theme($removed, $local_destination, $remote_destination, $theme) { global $wp_filesystem; $theme = isset($theme['theme']) ? $theme['theme'] : ''; if ( is_wp_error($removed) || empty($theme) ) return $removed; //Pass errors through. $themes_dir = $wp_filesystem->wp_themes_dir(); if ( $wp_filesystem->exists( trailingslashit($themes_dir) . $theme ) ) if ( ! $wp_filesystem->delete( trailingslashit($themes_dir) . $theme, true ) ) return false; return true; } function theme_info($theme = null) { if ( empty($theme) ) { if ( !empty($this->result['destination_name']) ) $theme = $this->result['destination_name']; else return false; } return get_theme_data(WP_CONTENT_DIR . '/themes/' . $theme . '/style.css'); } } /** * Core Upgrader class for WordPress. It allows for WordPress to upgrade itself in combiantion with the wp-admin/includes/update-core.php file * * @TODO More Detailed docs, for methods as well. * * @package WordPress * @subpackage Upgrader * @since 2.8.0 */ class Core_Upgrader extends WP_Upgrader { function upgrade_strings() { $this->strings['up_to_date'] = __('WordPress is at the latest version.'); $this->strings['no_package'] = __('Update package not available.'); $this->strings['downloading_package'] = __('Downloading update from %s…'); $this->strings['unpack_package'] = __('Unpacking the update…'); $this->strings['copy_failed'] = __('Could not copy files.'); } function upgrade($current) { global $wp_filesystem; $this->init(); $this->upgrade_strings(); if ( !empty($feedback) ) add_filter('update_feedback', $feedback); // Is an update available? if ( !isset( $current->response ) || $current->response == 'latest' ) return new WP_Error('up_to_date', $this->strings['up_to_date']); $res = $this->fs_connect( array(ABSPATH, WP_CONTENT_DIR) ); if ( is_wp_error($res) ) return $res; $wp_dir = trailingslashit($wp_filesystem->abspath()); $download = $this->download_package( $current->package ); if ( is_wp_error($download) ) return $download; $working_dir = $this->unpack_package( $download ); if ( is_wp_error($working_dir) ) return $working_dir; // Copy update-core.php from the new version into place. if ( !$wp_filesystem->copy($working_dir . '/wordpress/wp-admin/includes/update-core.php', $wp_dir . 'wp-admin/includes/update-core.php', true) ) { $wp_filesystem->delete($working_dir, true); return new WP_Error('copy_failed', $this->strings['copy_failed']); } $wp_filesystem->chmod($wp_dir . 'wp-admin/includes/update-core.php', FS_CHMOD_FILE); require(ABSPATH . 'wp-admin/includes/update-core.php'); return update_core($working_dir, $wp_dir); } } /** * Generic Skin for the WordPress Upgrader classes. This skin is designed to be extended for specific purposes. * * @TODO More Detailed docs, for methods as well. * * @package WordPress * @subpackage Upgrader * @since 2.8.0 */ class WP_Upgrader_Skin { var $upgrader; var $done_header = false; var $result = false; function WP_Upgrader_Skin($args = array()) { return $this->__construct($args); } function __construct($args = array()) { $defaults = array( 'url' => '', 'nonce' => '', 'title' => '', 'context' => false ); $this->options = wp_parse_args($args, $defaults); } function set_upgrader(&$upgrader) { if ( is_object($upgrader) ) $this->upgrader =& $upgrader; $this->add_strings(); } function add_strings() { } function set_result($result) { $this->result = $result; } function request_filesystem_credentials($error = false) { $url = $this->options['url']; $context = $this->options['context']; if ( !empty($this->options['nonce']) ) $url = wp_nonce_url($url, $this->options['nonce']); return request_filesystem_credentials($url, '', $error, $context); //Possible to bring inline, Leaving as is for now. } function header() { if ( $this->done_header ) return; $this->done_header = true; echo '
'; echo screen_icon(); echo '

' . $this->options['title'] . '

'; } function footer() { echo '
'; } function error($errors) { if ( ! $this->done_header ) $this->header(); if ( is_string($errors) ) { $this->feedback($errors); } elseif ( is_wp_error($errors) && $errors->get_error_code() ) { foreach ( $errors->get_error_messages() as $message ) { if ( $errors->get_error_data() ) $this->feedback($message . ' ' . $errors->get_error_data() ); else $this->feedback($message); } } } function feedback($string) { if ( isset( $this->upgrader->strings[$string] ) ) $string = $this->upgrader->strings[$string]; if ( strpos($string, '%') !== false ) { $args = func_get_args(); $args = array_splice($args, 1); if ( !empty($args) ) $string = vsprintf($string, $args); } if ( empty($string) ) return; show_message($string); } function before() {} function after() {} } /** * Plugin Upgrader Skin for WordPress Plugin Upgrades. * * @TODO More Detailed docs, for methods as well. * * @package WordPress * @subpackage Upgrader * @since 2.8.0 */ class Plugin_Upgrader_Skin extends WP_Upgrader_Skin { var $plugin = ''; var $plugin_active = false; var $plugin_network_active = false; function Plugin_Upgrader_Skin($args = array()) { return $this->__construct($args); } function __construct($args = array()) { $defaults = array( 'url' => '', 'plugin' => '', 'nonce' => '', 'title' => __('Update Plugin') ); $args = wp_parse_args($args, $defaults); $this->plugin = $args['plugin']; $this->plugin_active = is_plugin_active( $this->plugin ); $this->plugin_network_active = is_plugin_active_for_network( $this->plugin ); parent::__construct($args); } function after() { $this->plugin = $this->upgrader->plugin_info(); if ( !empty($this->plugin) && !is_wp_error($this->result) && $this->plugin_active ){ show_message(__('Reactivating the plugin…')); echo ''; } $update_actions = array( 'activate_plugin' => '' . __('Activate Plugin') . '', 'plugins_page' => '' . __('Return to Plugins page') . '' ); if ( $this->plugin_active ) unset( $update_actions['activate_plugin'] ); if ( ! $this->result || is_wp_error($this->result) ) unset( $update_actions['activate_plugin'] ); $update_actions = apply_filters('update_plugin_complete_actions', $update_actions, $this->plugin); if ( ! empty($update_actions) ) $this->feedback(implode(' | ', (array)$update_actions)); } function before() { if ( $this->upgrader->show_before ) { echo $this->upgrader->show_before; $this->upgrader->show_before = ''; } } } /** * Plugin Upgrader Skin for WordPress Plugin Upgrades. * * @package WordPress * @subpackage Upgrader * @since 3.0.0 */ class Bulk_Upgrader_Skin extends WP_Upgrader_Skin { var $in_loop = false; var $error = false; function Bulk_Upgrader_Skin($args = array()) { return $this->__construct($args); } function __construct($args = array()) { $defaults = array( 'url' => '', 'nonce' => '' ); $args = wp_parse_args($args, $defaults); parent::__construct($args); } function add_strings() { $this->upgrader->strings['skin_upgrade_start'] = __('The update process is starting. This process may take a while on some hosts, so please be patient.'); $this->upgrader->strings['skin_update_failed_error'] = __('An error occurred while updating %1$s: %2$s.'); $this->upgrader->strings['skin_update_failed'] = __('The update of %1$s failed.'); $this->upgrader->strings['skin_update_successful'] = __('%1$s updated successfully.').' '.__('Show Details').'.'; $this->upgrader->strings['skin_upgrade_end'] = __('All updates have been completed.'); } function feedback($string) { if ( isset( $this->upgrader->strings[$string] ) ) $string = $this->upgrader->strings[$string]; if ( strpos($string, '%') !== false ) { $args = func_get_args(); $args = array_splice($args, 1); if ( !empty($args) ) $string = vsprintf($string, $args); } if ( empty($string) ) return; if ( $this->in_loop ) echo "$string
\n"; else echo "

$string

\n"; } function header() { // Nothing, This will be displayed within a iframe. } function footer() { // Nothing, This will be displayed within a iframe. } function error($error) { if ( is_string($error) && isset( $this->upgrader->strings[$error] ) ) $this->error = $this->upgrader->strings[$error]; if ( is_wp_error($error) ) { foreach ( $error->get_error_messages() as $emessage ) { if ( $error->get_error_data() ) $messages[] = $emessage . ' ' . $error->get_error_data(); else $messages[] = $emessage; } $this->error = implode(', ', $messages); } echo ''; } function bulk_header() { $this->feedback('skin_upgrade_start'); } function bulk_footer() { $this->feedback('skin_upgrade_end'); } function before($title = '') { $this->in_loop = true; printf( '

' . $this->upgrader->strings['skin_before_update_header'] . '

', $title, $this->upgrader->update_current, $this->upgrader->update_count); echo ''; echo '

'; $this->flush_output(); } function after($title = '') { echo '

'; if ( $this->error || ! $this->result ) { if ( $this->error ) echo '

' . sprintf($this->upgrader->strings['skin_update_failed_error'], $title, $this->error) . '

'; else echo '

' . sprintf($this->upgrader->strings['skin_update_failed'], $title) . '

'; echo ''; } if ( !empty($this->result) && !is_wp_error($this->result) ) { echo '

' . sprintf($this->upgrader->strings['skin_update_successful'], $title, 'jQuery(\'#progress-' . esc_js($this->upgrader->update_current) . '\').toggle();jQuery(\'span\', this).toggle(); return false;') . '

'; echo ''; } $this->reset(); $this->flush_output(); } function reset() { $this->in_loop = false; $this->error = false; } function flush_output() { wp_ob_end_flush_all(); flush(); } } class Bulk_Plugin_Upgrader_Skin extends Bulk_Upgrader_Skin { var $plugin_info = array(); // Plugin_Upgrader::bulk() will fill this in. function Plugin_Upgrader_Skin($args = array()) { parent::__construct($args); } function add_strings() { parent::add_strings(); $this->upgrader->strings['skin_before_update_header'] = __('Updating Plugin %1$s (%2$d/%3$d)'); } function before() { parent::before($this->plugin_info['Title']); } function after() { parent::after($this->plugin_info['Title']); } function bulk_footer() { parent::bulk_footer(); $update_actions = array( 'plugins_page' => '' . __('Return to Plugins page') . '', 'updates_page' => '' . __('Return to WordPress Updates') . '' ); $update_actions = apply_filters('update_bulk_plugins_complete_actions', $update_actions, $this->plugin_info); if ( ! empty($update_actions) ) $this->feedback(implode(' | ', (array)$update_actions)); } } class Bulk_Theme_Upgrader_Skin extends Bulk_Upgrader_Skin { var $theme_info = array(); // Theme_Upgrader::bulk() will fill this in. function Theme_Upgrader_Skin($args = array()) { parent::__construct($args); } function add_strings() { parent::add_strings(); $this->upgrader->strings['skin_before_update_header'] = __('Updating Theme %1$s (%2$d/%3$d)'); } function before() { parent::before($this->theme_info['Name']); } function after() { parent::after($this->theme_info['Name']); } function bulk_footer() { parent::bulk_footer(); $update_actions = array( 'themes_page' => '' . __('Return to Themes page') . '', 'updates_page' => '' . __('Return to WordPress Updates') . '' ); $update_actions = apply_filters('update_bulk_theme_complete_actions', $update_actions, $this->theme_info); if ( ! empty($update_actions) ) $this->feedback(implode(' | ', (array)$update_actions)); } } /** * Plugin Installer Skin for WordPress Plugin Installer. * * @TODO More Detailed docs, for methods as well. * * @package WordPress * @subpackage Upgrader * @since 2.8.0 */ class Plugin_Installer_Skin extends WP_Upgrader_Skin { var $api; var $type; function Plugin_Installer_Skin($args = array()) { return $this->__construct($args); } function __construct($args = array()) { $defaults = array( 'type' => 'web', 'url' => '', 'plugin' => '', 'nonce' => '', 'title' => '' ); $args = wp_parse_args($args, $defaults); $this->type = $args['type']; $this->api = isset($args['api']) ? $args['api'] : array(); parent::__construct($args); } function before() { if ( !empty($this->api) ) $this->upgrader->strings['process_success'] = sprintf( __('Successfully installed the plugin %s %s.'), $this->api->name, $this->api->version); } function after() { $plugin_file = $this->upgrader->plugin_info(); $install_actions = array(); $from = isset($_GET['from']) ? stripslashes($_GET['from']) : 'plugins'; if ( 'import' == $from ) $install_actions['activate_plugin'] = '' . __('Activate Plugin & Run Importer') . ''; else $install_actions['activate_plugin'] = '' . __('Activate Plugin') . ''; if ( is_multisite() && current_user_can( 'manage_network_plugins' ) ) { $install_actions['network_activate'] = '' . __('Network Activate') . ''; unset( $install_actions['activate_plugin'] ); } if ( 'import' == $from ) $install_actions['importers_page'] = '' . __('Return to Importers') . ''; else if ( $this->type == 'web' ) $install_actions['plugins_page'] = '' . __('Return to Plugin Installer') . ''; else $install_actions['plugins_page'] = '' . __('Return to Plugins page') . ''; if ( ! $this->result || is_wp_error($this->result) ) { unset( $install_actions['activate_plugin'] ); unset( $install_actions['network_activate'] ); } $install_actions = apply_filters('install_plugin_complete_actions', $install_actions, $this->api, $plugin_file); if ( ! empty($install_actions) ) $this->feedback(implode(' | ', (array)$install_actions)); } } /** * Theme Installer Skin for the WordPress Theme Installer. * * @TODO More Detailed docs, for methods as well. * * @package WordPress * @subpackage Upgrader * @since 2.8.0 */ class Theme_Installer_Skin extends WP_Upgrader_Skin { var $api; var $type; function Theme_Installer_Skin($args = array()) { return $this->__construct($args); } function __construct($args = array()) { $defaults = array( 'type' => 'web', 'url' => '', 'theme' => '', 'nonce' => '', 'title' => '' ); $args = wp_parse_args($args, $defaults); $this->type = $args['type']; $this->api = isset($args['api']) ? $args['api'] : array(); parent::__construct($args); } function before() { if ( !empty($this->api) ) { /* translators: 1: theme name, 2: version */ $this->upgrader->strings['process_success'] = sprintf( __('Successfully installed the theme %1$s %2$s.'), $this->api->name, $this->api->version); } } function after() { if ( empty($this->upgrader->result['destination_name']) ) return; $theme_info = $this->upgrader->theme_info(); if ( empty($theme_info) ) return; $name = $theme_info['Name']; $stylesheet = $this->upgrader->result['destination_name']; $template = !empty($theme_info['Template']) ? $theme_info['Template'] : $stylesheet; $preview_link = htmlspecialchars( add_query_arg( array('preview' => 1, 'template' => $template, 'stylesheet' => $stylesheet, 'preview_iframe' => 1, 'TB_iframe' => 'true' ), trailingslashit(esc_url(get_option('home'))) ) ); $activate_link = wp_nonce_url("themes.php?action=activate&template=" . urlencode($template) . "&stylesheet=" . urlencode($stylesheet), 'switch-theme_' . $template); $install_actions = array( 'preview' => '' . __('Preview') . '', 'activate' => '' . __('Activate') . '' ); if ( $this->type == 'web' ) $install_actions['themes_page'] = '' . __('Return to Theme Installer') . ''; else $install_actions['themes_page'] = '' . __('Return to Themes page') . ''; if ( ! $this->result || is_wp_error($this->result) || is_network_admin() ) unset( $install_actions['activate'], $install_actions['preview'] ); $install_actions = apply_filters('install_theme_complete_actions', $install_actions, $this->api, $stylesheet, $theme_info); if ( ! empty($install_actions) ) $this->feedback(implode(' | ', (array)$install_actions)); } } /** * Theme Upgrader Skin for WordPress Theme Upgrades. * * @TODO More Detailed docs, for methods as well. * * @package WordPress * @subpackage Upgrader * @since 2.8.0 */ class Theme_Upgrader_Skin extends WP_Upgrader_Skin { var $theme = ''; function Theme_Upgrader_Skin($args = array()) { return $this->__construct($args); } function __construct($args = array()) { $defaults = array( 'url' => '', 'theme' => '', 'nonce' => '', 'title' => __('Update Theme') ); $args = wp_parse_args($args, $defaults); $this->theme = $args['theme']; parent::__construct($args); } function after() { $update_actions = array(); if ( !empty($this->upgrader->result['destination_name']) && ($theme_info = $this->upgrader->theme_info()) && !empty($theme_info) ) { $name = $theme_info['Name']; $stylesheet = $this->upgrader->result['destination_name']; $template = !empty($theme_info['Template']) ? $theme_info['Template'] : $stylesheet; $preview_link = htmlspecialchars( add_query_arg( array('preview' => 1, 'template' => $template, 'stylesheet' => $stylesheet, 'TB_iframe' => 'true' ), trailingslashit(esc_url(get_option('home'))) ) ); $activate_link = wp_nonce_url("themes.php?action=activate&template=" . urlencode($template) . "&stylesheet=" . urlencode($stylesheet), 'switch-theme_' . $template); $update_actions['preview'] = '' . __('Preview') . ''; $update_actions['activate'] = '' . __('Activate') . ''; if ( ( ! $this->result || is_wp_error($this->result) ) || $stylesheet == get_stylesheet() ) unset($update_actions['preview'], $update_actions['activate']); } $update_actions['themes_page'] = '' . __('Return to Themes page') . ''; $update_actions = apply_filters('update_theme_complete_actions', $update_actions, $this->theme); if ( ! empty($update_actions) ) $this->feedback(implode(' | ', (array)$update_actions)); } } /** * Upgrade Skin helper for File uploads. This class handles the upload process and passes it as if its a local file to the Upgrade/Installer functions. * * @TODO More Detailed docs, for methods as well. * * @package WordPress * @subpackage Upgrader * @since 2.8.0 */ class File_Upload_Upgrader { var $package; var $filename; function File_Upload_Upgrader($form, $urlholder) { return $this->__construct($form, $urlholder); } function __construct($form, $urlholder) { if ( ! ( ( $uploads = wp_upload_dir() ) && false === $uploads['error'] ) ) wp_die($uploads['error']); if ( empty($_FILES[$form]['name']) && empty($_GET[$urlholder]) ) wp_die(__('Please select a file')); if ( !empty($_FILES) ) $this->filename = $_FILES[$form]['name']; else if ( isset($_GET[$urlholder]) ) $this->filename = $_GET[$urlholder]; //Handle a newly uploaded file, Else assume its already been uploaded if ( !empty($_FILES) ) { $this->filename = wp_unique_filename( $uploads['basedir'], $this->filename ); $this->package = $uploads['basedir'] . '/' . $this->filename; // Move the file to the uploads dir if ( false === @ move_uploaded_file( $_FILES[$form]['tmp_name'], $this->package) ) wp_die( sprintf( __('The uploaded file could not be moved to %s.' ), $uploads['path'])); } else { $this->package = $uploads['basedir'] . '/' . $this->filename; } } }wp-admin/includes/class-wp-users-list-table.php0000644002347300047320000002266111656660350021404 0ustar vonfabpsaclnis_site_users = 'site-users-network' == $screen->id; if ( $this->is_site_users ) $this->site_id = isset( $_REQUEST['id'] ) ? intval( $_REQUEST['id'] ) : 0; parent::WP_List_Table( array( 'singular' => 'user', 'plural' => 'users' ) ); } function ajax_user_can() { if ( $this->is_site_users ) return current_user_can( 'manage_sites' ); else return current_user_can( 'list_users' ); } function prepare_items() { global $role, $usersearch; $usersearch = isset( $_REQUEST['s'] ) ? $_REQUEST['s'] : ''; $role = isset( $_REQUEST['role'] ) ? $_REQUEST['role'] : ''; $per_page = ( $this->is_site_users ) ? 'site_users_network_per_page' : 'users_per_page'; $users_per_page = $this->get_items_per_page( $per_page ); $paged = $this->get_pagenum(); $args = array( 'number' => $users_per_page, 'offset' => ( $paged-1 ) * $users_per_page, 'role' => $role, 'search' => $usersearch, 'fields' => 'all_with_meta' ); $args['search'] = '*' . $args['search'] . '*'; if ( $this->is_site_users ) $args['blog_id'] = $this->site_id; if ( isset( $_REQUEST['orderby'] ) ) $args['orderby'] = $_REQUEST['orderby']; if ( isset( $_REQUEST['order'] ) ) $args['order'] = $_REQUEST['order']; // Query the user IDs for this page $wp_user_search = new WP_User_Query( $args ); $this->items = $wp_user_search->get_results(); $this->set_pagination_args( array( 'total_items' => $wp_user_search->get_total(), 'per_page' => $users_per_page, ) ); } function no_items() { _e( 'No matching users were found.' ); } function get_views() { global $wp_roles, $role; if ( $this->is_site_users ) { $url = 'site-users.php?id=' . $this->site_id; switch_to_blog( $this->site_id ); $users_of_blog = count_users(); restore_current_blog(); } else { $url = 'users.php'; $users_of_blog = count_users(); } $total_users = $users_of_blog['total_users']; $avail_roles =& $users_of_blog['avail_roles']; unset($users_of_blog); $current_role = false; $class = empty($role) ? ' class="current"' : ''; $role_links = array(); $role_links['all'] = "" . sprintf( _nx( 'All (%s)', 'All (%s)', $total_users, 'users' ), number_format_i18n( $total_users ) ) . ''; foreach ( $wp_roles->get_names() as $this_role => $name ) { if ( !isset($avail_roles[$this_role]) ) continue; $class = ''; if ( $this_role == $role ) { $current_role = $role; $class = ' class="current"'; } $name = translate_user_role( $name ); /* translators: User role name with count */ $name = sprintf( __('%1$s (%2$s)'), $name, $avail_roles[$this_role] ); $role_links[$this_role] = "$name"; } return $role_links; } function get_bulk_actions() { $actions = array(); if ( is_multisite() ) { if ( current_user_can( 'remove_users' ) ) $actions['remove'] = __( 'Remove' ); } else { if ( current_user_can( 'delete_users' ) ) $actions['delete'] = __( 'Delete' ); } return $actions; } function extra_tablenav( $which ) { if ( 'top' != $which ) return; if ( ! current_user_can( 'promote_users' ) ) return; ?>
'', 'username' => __( 'Username' ), 'name' => __( 'Name' ), 'email' => __( 'E-mail' ), 'role' => __( 'Role' ), 'posts' => __( 'Posts' ) ); if ( $this->is_site_users ) unset( $c['posts'] ); return $c; } function get_sortable_columns() { $c = array( 'username' => 'login', 'name' => 'name', 'email' => 'email', ); if ( $this->is_site_users ) unset( $c['posts'] ); return $c; } function display_rows() { // Query the post counts for this page if ( ! $this->is_site_users ) $post_counts = count_many_users_posts( array_keys( $this->items ) ); $style = ''; foreach ( $this->items as $userid => $user_object ) { $role = reset( $user_object->roles ); if ( is_multisite() && empty( $role ) ) continue; $style = ( ' class="alternate"' == $style ) ? '' : ' class="alternate"'; echo "\n\t", $this->single_row( $user_object, $style, $role, isset( $post_counts ) ? $post_counts[ $userid ] : 0 ); } } /** * Generate HTML for a single row on the users.php admin panel. * * @since 2.1.0 * * @param object $user_object * @param string $style Optional. Attributes added to the TR element. Must be sanitized. * @param string $role Key for the $wp_roles array. * @param int $numposts Optional. Post count to display for this user. Defaults to zero, as in, a new user has made zero posts. * @return string */ function single_row( $user_object, $style = '', $role = '', $numposts = 0 ) { global $wp_roles; if ( !( is_object( $user_object ) && is_a( $user_object, 'WP_User' ) ) ) $user_object = new WP_User( (int) $user_object ); $user_object = sanitize_user_object( $user_object, 'display' ); $email = $user_object->user_email; if ( $this->is_site_users ) $url = "site-users.php?id={$this->site_id}&"; else $url = 'users.php?'; $checkbox = ''; // Check if the user for this row is editable if ( current_user_can( 'list_users' ) ) { // Set up the user editing link // TODO: make profile/user-edit determination a separate function if ( get_current_user_id() == $user_object->ID ) { $edit_link = 'profile.php'; } else { $edit_link = esc_url( add_query_arg( 'wp_http_referer', urlencode( stripslashes( $_SERVER['REQUEST_URI'] ) ), "user-edit.php?user_id=$user_object->ID" ) ); } // Set up the hover actions for this user $actions = array(); if ( current_user_can( 'edit_user', $user_object->ID ) ) { $edit = "$user_object->user_login
"; $actions['edit'] = '' . __( 'Edit' ) . ''; } else { $edit = "$user_object->user_login
"; } if ( !is_multisite() && get_current_user_id() != $user_object->ID && current_user_can( 'delete_user', $user_object->ID ) ) $actions['delete'] = "" . __( 'Delete' ) . ""; if ( is_multisite() && get_current_user_id() != $user_object->ID && current_user_can( 'remove_user', $user_object->ID ) ) $actions['remove'] = "" . __( 'Remove' ) . ""; $actions = apply_filters( 'user_row_actions', $actions, $user_object ); $edit .= $this->row_actions( $actions ); // Set up the checkbox ( because the user is editable, otherwise its empty ) $checkbox = ""; } else { $edit = '' . $user_object->user_login . ''; } $role_name = isset( $wp_roles->role_names[$role] ) ? translate_user_role( $wp_roles->role_names[$role] ) : __( 'None' ); $avatar = get_avatar( $user_object->ID, 32 ); $r = ""; list( $columns, $hidden ) = $this->get_column_info(); foreach ( $columns as $column_name => $column_display_name ) { $class = "class=\"$column_name column-$column_name\""; $style = ''; if ( in_array( $column_name, $hidden ) ) $style = ' style="display:none;"'; $attributes = "$class$style"; switch ( $column_name ) { case 'cb': $r .= "$checkbox"; break; case 'username': $r .= "$avatar $edit"; break; case 'name': $r .= "$user_object->first_name $user_object->last_name"; break; case 'email': $r .= "$email"; break; case 'role': $r .= "$role_name"; break; case 'posts': $attributes = 'class="posts column-posts num"' . $style; $r .= ""; if ( $numposts > 0 ) { $r .= ""; $r .= $numposts; $r .= ''; } else { $r .= 0; } $r .= ""; break; default: $r .= ""; $r .= apply_filters( 'manage_users_custom_column', '', $column_name, $user_object->ID ); $r .= ""; } } $r .= ''; return $r; } } ?> wp-admin/includes/comment.php0000644002347300047320000001062711656660350016117 0ustar vonfabpsaclnget_var( $wpdb->prepare("SELECT comment_post_ID FROM $wpdb->comments WHERE comment_author = %s AND comment_date = %s", $comment_author, $comment_date) ); } /** * Update a comment with values provided in $_POST. * * @since 2.0.0 */ function edit_comment() { if ( ! current_user_can( 'edit_comment', (int) $_POST['comment_ID'] ) ) wp_die ( __( 'You are not allowed to edit comments on this post.' ) ); $_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']; foreach ( array ('aa', 'mm', 'jj', 'hh', 'mn') as $timeunit ) { if ( !empty( $_POST['hidden_' . $timeunit] ) && $_POST['hidden_' . $timeunit] != $_POST[$timeunit] ) { $_POST['edit_date'] = '1'; break; } } 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 ); } /** * {@internal Missing Short Description}} * * @since 2.0.0 * * @param int $id ID of comment to retrieve * @return bool|object Comment if found. False on failure. */ function get_comment_to_edit( $id ) { if ( !$comment = get_comment($id) ) return false; $comment->comment_ID = (int) $comment->comment_ID; $comment->comment_post_ID = (int) $comment->comment_post_ID; $comment->comment_content = format_to_edit( $comment->comment_content ); $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 ); $comment->comment_author_url = esc_url($comment->comment_author_url); return $comment; } /** * Get the number of pending comments on a post or posts * * @since 2.3.0 * @uses $wpdb * * @param int|array $post_id Either a single Post ID or an array of Post IDs * @return int|array Either a single Posts pending comments as an int or an array of ints keyed on the Post IDs */ function get_pending_comments_num( $post_id ) { global $wpdb; $single = false; if ( !is_array($post_id) ) { $post_id_array = (array) $post_id; $single = true; } else { $post_id_array = $post_id; } $post_id_array = array_map('intval', $post_id_array); $post_id_in = "'" . implode("', '", $post_id_array) . "'"; $pending = $wpdb->get_results( "SELECT comment_post_ID, COUNT(comment_ID) as num_comments FROM $wpdb->comments WHERE comment_post_ID IN ( $post_id_in ) AND comment_approved = '0' GROUP BY comment_post_ID", ARRAY_A ); if ( $single ) { if ( empty($pending) ) return 0; else return absint($pending[0]['num_comments']); } $pending_keyed = array(); // Default to zero pending for all posts in request foreach ( $post_id_array as $id ) $pending_keyed[$id] = 0; if ( !empty($pending) ) foreach ( $pending as $pend ) $pending_keyed[$pend['comment_post_ID']] = absint($pend['num_comments']); return $pending_keyed; } /** * Add avatars to relevant places in admin, or try to. * * @since 2.5.0 * @uses $comment * * @param string $name User name. * @return string Avatar with Admin name. */ function floated_admin_avatar( $name ) { global $comment; $avatar = get_avatar( $comment, 32 ); return "$avatar $name"; } function enqueue_comment_hotkeys_js() { if ( 'true' == get_user_option( 'comment_shortcuts' ) ) wp_enqueue_script( 'jquery-table-hotkeys' ); } ?> wp-admin/includes/continents-cities.php0000644002347300047320000004272511656660350020123 0ustar vonfabpsacln 5, ); } $recent_comments_title = __( 'Recent Comments' ); wp_add_dashboard_widget( 'dashboard_recent_comments', $recent_comments_title, 'wp_dashboard_recent_comments', 'wp_dashboard_recent_comments_control' ); } // Incoming Links Widget if ( is_blog_admin() && current_user_can('publish_posts') ) { if ( !isset( $widget_options['dashboard_incoming_links'] ) || !isset( $widget_options['dashboard_incoming_links']['home'] ) || $widget_options['dashboard_incoming_links']['home'] != get_option('home') ) { $update = true; $num_items = isset($widget_options['dashboard_incoming_links']['items']) ? $widget_options['dashboard_incoming_links']['items'] : 10; $widget_options['dashboard_incoming_links'] = array( 'home' => get_option('home'), 'link' => apply_filters( 'dashboard_incoming_links_link', 'http://blogsearch.google.com/blogsearch?scoring=d&partner=wordpress&q=link:' . trailingslashit( get_option('home') ) ), 'url' => isset($widget_options['dashboard_incoming_links']['url']) ? apply_filters( 'dashboard_incoming_links_feed', $widget_options['dashboard_incoming_links']['url'] ) : apply_filters( 'dashboard_incoming_links_feed', 'http://blogsearch.google.com/blogsearch_feeds?scoring=d&ie=utf-8&num=' . $num_items . '&output=rss&partner=wordpress&q=link:' . trailingslashit( get_option('home') ) ), 'items' => $num_items, 'show_date' => isset($widget_options['dashboard_incoming_links']['show_date']) ? $widget_options['dashboard_incoming_links']['show_date'] : false ); } wp_add_dashboard_widget( 'dashboard_incoming_links', __( 'Incoming Links' ), 'wp_dashboard_incoming_links', 'wp_dashboard_incoming_links_control' ); } // WP Plugins Widget if ( ( ! is_multisite() && is_blog_admin() && current_user_can( 'install_plugins' ) ) || ( is_network_admin() && current_user_can( 'manage_network_plugins' ) && current_user_can( 'install_plugins' ) ) ) wp_add_dashboard_widget( 'dashboard_plugins', __( 'Plugins' ), 'wp_dashboard_plugins' ); // QuickPress Widget if ( is_blog_admin() && current_user_can('edit_posts') ) wp_add_dashboard_widget( 'dashboard_quick_press', __( 'QuickPress' ), 'wp_dashboard_quick_press' ); // Recent Drafts if ( is_blog_admin() && current_user_can('edit_posts') ) wp_add_dashboard_widget( 'dashboard_recent_drafts', __('Recent Drafts'), 'wp_dashboard_recent_drafts' ); // Primary feed (Dev Blog) Widget if ( !isset( $widget_options['dashboard_primary'] ) ) { $update = true; $widget_options['dashboard_primary'] = array( 'link' => apply_filters( 'dashboard_primary_link', __( 'http://wordpress.org/news/' ) ), 'url' => apply_filters( 'dashboard_primary_feed', __( 'http://wordpress.org/news/feed/' ) ), 'title' => apply_filters( 'dashboard_primary_title', __( 'WordPress Blog' ) ), 'items' => 2, 'show_summary' => 1, 'show_author' => 0, 'show_date' => 1, ); } wp_add_dashboard_widget( 'dashboard_primary', $widget_options['dashboard_primary']['title'], 'wp_dashboard_primary', 'wp_dashboard_primary_control' ); // Secondary Feed (Planet) Widget if ( !isset( $widget_options['dashboard_secondary'] ) ) { $update = true; $widget_options['dashboard_secondary'] = array( 'link' => apply_filters( 'dashboard_secondary_link', __( 'http://planet.wordpress.org/' ) ), 'url' => apply_filters( 'dashboard_secondary_feed', __( 'http://planet.wordpress.org/feed/' ) ), 'title' => apply_filters( 'dashboard_secondary_title', __( 'Other WordPress News' ) ), 'items' => 5, 'show_summary' => 0, 'show_author' => 0, 'show_date' => 0, ); } wp_add_dashboard_widget( 'dashboard_secondary', $widget_options['dashboard_secondary']['title'], 'wp_dashboard_secondary', 'wp_dashboard_secondary_control' ); // Hook to register new widgets // Filter widget order if ( is_network_admin() ) { do_action( 'wp_network_dashboard_setup' ); $dashboard_widgets = apply_filters( 'wp_network_dashboard_widgets', array() ); } elseif ( is_user_admin() ) { do_action( 'wp_user_dashboard_setup' ); $dashboard_widgets = apply_filters( 'wp_user_dashboard_widgets', array() ); } else { do_action( 'wp_dashboard_setup' ); $dashboard_widgets = apply_filters( 'wp_dashboard_widgets', array() ); } foreach ( $dashboard_widgets as $widget_id ) { $name = empty( $wp_registered_widgets[$widget_id]['all_link'] ) ? $wp_registered_widgets[$widget_id]['name'] : $wp_registered_widgets[$widget_id]['name'] . " " . __('View all') . ''; wp_add_dashboard_widget( $widget_id, $name, $wp_registered_widgets[$widget_id]['callback'], $wp_registered_widget_controls[$widget_id]['callback'] ); } if ( 'POST' == $_SERVER['REQUEST_METHOD'] && isset($_POST['widget_id']) ) { ob_start(); // hack - but the same hack wp-admin/widgets.php uses wp_dashboard_trigger_widget_control( $_POST['widget_id'] ); ob_end_clean(); wp_redirect( remove_query_arg( 'edit' ) ); exit; } if ( $update ) update_option( 'dashboard_widget_options', $widget_options ); do_action('do_meta_boxes', $screen->id, 'normal', ''); do_action('do_meta_boxes', $screen->id, 'side', ''); } function wp_add_dashboard_widget( $widget_id, $widget_name, $callback, $control_callback = null ) { $screen = get_current_screen(); global $wp_dashboard_control_callbacks; if ( $control_callback && current_user_can( 'edit_dashboard' ) && is_callable( $control_callback ) ) { $wp_dashboard_control_callbacks[$widget_id] = $control_callback; if ( isset( $_GET['edit'] ) && $widget_id == $_GET['edit'] ) { list($url) = explode( '#', add_query_arg( 'edit', false ), 2 ); $widget_name .= ' ' . __( 'Cancel' ) . ''; $callback = '_wp_dashboard_control_callback'; } else { list($url) = explode( '#', add_query_arg( 'edit', $widget_id ), 2 ); $widget_name .= ' ' . __( 'Configure' ) . ''; } } if ( is_blog_admin () ) $side_widgets = array('dashboard_quick_press', 'dashboard_recent_drafts', 'dashboard_primary', 'dashboard_secondary'); else if (is_network_admin() ) $side_widgets = array('dashboard_primary', 'dashboard_secondary'); else $side_widgets = array(); $location = 'normal'; if ( in_array($widget_id, $side_widgets) ) $location = 'side'; add_meta_box( $widget_id, $widget_name , $callback, $screen->id, $location, 'core' ); } function _wp_dashboard_control_callback( $dashboard, $meta_box ) { echo '
'; wp_dashboard_trigger_widget_control( $meta_box['id'] ); echo ''; submit_button( __('Submit') ); echo '
'; } /** * Displays the dashboard. * * @since 2.5.0 */ function wp_dashboard() { global $screen_layout_columns; $screen = get_current_screen(); $hide2 = $hide3 = $hide4 = ''; switch ( $screen_layout_columns ) { case 4: $width = 'width:24.5%;'; break; case 3: $width = 'width:32.67%;'; $hide4 = 'display:none;'; break; case 2: $width = 'width:49%;'; $hide3 = $hide4 = 'display:none;'; break; default: $width = 'width:98%;'; $hide2 = $hide3 = $hide4 = 'display:none;'; } ?>
\n"; do_meta_boxes( $screen->id, 'normal', '' ); echo "\t
\n"; do_meta_boxes( $screen->id, 'side', '' ); echo "\t
\n"; do_meta_boxes( $screen->id, 'column3', '' ); echo "\t
\n"; do_meta_boxes( $screen->id, 'column4', '' ); ?>

'; echo "\n\t".'

' . __('Content') . '

'."\n\t".''; echo "\n\t".''; // Posts $num = number_format_i18n( $num_posts->publish ); $text = _n( 'Post', 'Posts', intval($num_posts->publish) ); if ( current_user_can( 'edit_posts' ) ) { $num = "$num"; $text = "$text"; } echo ''; echo ''; echo ''; /* TODO: Show status breakdown on hover if ( $can_edit_pages && !empty($num_pages->publish) ) { // how many pages is not exposed in feeds. Don't show if !current_user_can $post_type_texts[] = ''.sprintf( _n( '%s page', '%s pages', $num_pages->publish ), number_format_i18n( $num_pages->publish ) ).''; } if ( $can_edit_posts && !empty($num_posts->draft) ) { $post_type_texts[] = ''.sprintf( _n( '%s draft', '%s drafts', $num_posts->draft ), number_format_i18n( $num_posts->draft ) ).''; } if ( $can_edit_posts && !empty($num_posts->future) ) { $post_type_texts[] = ''.sprintf( _n( '%s scheduled post', '%s scheduled posts', $num_posts->future ), number_format_i18n( $num_posts->future ) ).''; } if ( current_user_can('publish_posts') && !empty($num_posts->pending) ) { $pending_text = sprintf( _n( 'There is %2$s post pending your review.', 'There are %2$s posts pending your review.', $num_posts->pending ), 'edit.php?post_status=pending', number_format_i18n( $num_posts->pending ) ); } else { $pending_text = ''; } */ // Pages $num = number_format_i18n( $num_pages->publish ); $text = _n( 'Page', 'Pages', $num_pages->publish ); if ( current_user_can( 'edit_pages' ) ) { $num = "$num"; $text = "$text"; } echo ''; echo ''; echo ''; // Categories $num = number_format_i18n( $num_cats ); $text = _n( 'Category', 'Categories', $num_cats ); if ( current_user_can( 'manage_categories' ) ) { $num = "$num"; $text = "$text"; } echo ''; echo ''; echo ''; // Tags $num = number_format_i18n( $num_tags ); $text = _n( 'Tag', 'Tags', $num_tags ); if ( current_user_can( 'manage_categories' ) ) { $num = "$num"; $text = "$text"; } echo ''; echo ''; echo ""; do_action('right_now_content_table_end'); echo "\n\t
' . $num . '' . $text . '
' . $num . '' . $text . '
' . $num . '' . $text . '
' . $num . '' . $text . '
\n\t
"; echo "\n\t".'
'; echo "\n\t".'

' . __('Discussion') . '

'."\n\t".''; echo "\n\t".''; // Total Comments $num = '' . number_format_i18n($num_comm->total_comments) . ''; $text = _n( 'Comment', 'Comments', $num_comm->total_comments ); if ( current_user_can( 'moderate_comments' ) ) { $num = '' . $num . ''; $text = '' . $text . ''; } echo ''; echo ''; echo ''; // Approved Comments $num = '' . number_format_i18n($num_comm->approved) . ''; $text = _nx( 'Approved', 'Approved', $num_comm->approved, 'Right Now' ); if ( current_user_can( 'moderate_comments' ) ) { $num = "$num"; $text = "$text"; } echo ''; echo ''; echo "\n\t"; // Pending Comments $num = '' . number_format_i18n($num_comm->moderated) . ''; $text = _n( 'Pending', 'Pending', $num_comm->moderated ); if ( current_user_can( 'moderate_comments' ) ) { $num = "$num"; $text = "$text"; } echo ''; echo ''; echo "\n\t"; // Spam Comments $num = number_format_i18n($num_comm->spam); $text = _nx( 'Spam', 'Spam', $num_comm->spam, 'comment' ); if ( current_user_can( 'moderate_comments' ) ) { $num = "$num"; $text = "$text"; } echo ''; echo ''; echo ""; do_action('right_now_table_end'); do_action('right_now_discussion_table_end'); echo "\n\t
' . $num . '' . $text . '
' . $num . '' . $text . '
' . $num . '' . $text . '
' . $num . '' . $text . '
\n\t
"; echo "\n\t".'
'; $ct = current_theme_info(); echo "\n\t

"; if ( !empty($wp_registered_sidebars) ) { $sidebars_widgets = wp_get_sidebars_widgets(); $num_widgets = 0; foreach ( (array) $sidebars_widgets as $k => $v ) { if ( 'wp_inactive_widgets' == $k ) continue; if ( is_array($v) ) $num_widgets = $num_widgets + count($v); } $num = number_format_i18n( $num_widgets ); $switch_themes = $ct->title; if ( current_user_can( 'switch_themes') ) { echo '' . __('Change Theme') . ''; $switch_themes = '' . $switch_themes . ''; } if ( current_user_can( 'edit_theme_options' ) ) { printf(_n('Theme %1$s with %2$s Widget', 'Theme %1$s with %2$s Widgets', $num_widgets), $switch_themes, $num); } else { printf(_n('Theme %1$s with %2$s Widget', 'Theme %1$s with %2$s Widgets', $num_widgets), $switch_themes, $num); } } else { if ( current_user_can( 'switch_themes' ) ) { echo '' . __('Change Theme') . ''; printf( __('Theme %1$s'), $ct->title ); } else { printf( __('Theme %1$s'), $ct->title ); } } echo '

'; update_right_now_message(); echo "\n\t".'
'; do_action( 'rightnow_end' ); do_action( 'activity_box_end' ); } function wp_network_dashboard_right_now() { $actions = array(); if ( current_user_can('create_sites') ) $actions['create-site'] = '' . __( 'Create a New Site' ) . ''; if ( current_user_can('create_users') ) $actions['create-user'] = '' . __( 'Create a New User' ) . ''; $c_users = get_user_count(); $c_blogs = get_blog_count(); $user_text = sprintf( _n( '%s user', '%s users', $c_users ), number_format_i18n( $c_users ) ); $blog_text = sprintf( _n( '%s site', '%s sites', $c_blogs ), number_format_i18n( $c_blogs ) ); $sentence = sprintf( __( 'You have %1$s and %2$s.' ), $blog_text, $user_text ); if ( $actions ) { echo '
    '; foreach ( $actions as $class => $action ) { $actions[ $class ] = "\t
  • $action"; } echo implode( " |
  • \n", $actions ) . "\n"; echo '
'; } ?>

'submit_users' ) ); ?>

'submit_sites' ) ); ?>

' . __( 'Post published. View post | Edit post' ) . '

', esc_url( $view ), $edit ); else printf( '

' . __( 'Post submitted. Preview post | Edit post' ) . '

', esc_url( add_query_arg( 'preview', 1, $view ) ), $edit ); } else { printf( '

' . __( 'Draft saved. Preview post | Edit post' ) . '

', esc_url( add_query_arg( 'preview', 1, $view ) ), $edit ); $drafts_query = new WP_Query( array( 'post_type' => 'post', 'post_status' => 'draft', 'author' => $GLOBALS['current_user']->ID, 'posts_per_page' => 1, 'orderby' => 'modified', 'order' => 'DESC' ) ); if ( $drafts_query->posts ) $drafts =& $drafts_query->posts; } printf('

' . __('You can also try %s, easy blogging from anywhere on the Web.') . '

', '' . __('Press This') . '' ); $_REQUEST = array(); // hack for get_default_post_to_edit() } /* Check if a new auto-draft (= no new post_ID) is needed or if the old can be used */ $last_post_id = (int) get_user_option( 'dashboard_quick_press_last_post_id' ); // Get the last post_ID if ( $last_post_id ) { $post = get_post( $last_post_id ); if ( empty( $post ) || $post->post_status != 'auto-draft' ) { // auto-draft doesn't exists anymore $post = get_default_post_to_edit('post', true); update_user_option( (int) $GLOBALS['current_user']->ID, 'dashboard_quick_press_last_post_id', (int) $post->ID ); // Save post_ID } else { $post->post_title = ''; // Remove the auto draft title } } else { $post = get_default_post_to_edit('post', true); update_user_option( (int) $GLOBALS['current_user']->ID, 'dashboard_quick_press_last_post_id', (int) $post->ID ); // Save post_ID } $post_ID = (int) $post->ID; ?>

'save-post', 'tabindex'=> 4 ) ); ?>

' . __( 'Loading…' ) . '

' . __('This widget requires JavaScript.') . '

'; } function wp_dashboard_recent_drafts( $drafts = false ) { if ( !$drafts ) { $drafts_query = new WP_Query( array( 'post_type' => 'post', 'post_status' => 'draft', 'author' => $GLOBALS['current_user']->ID, 'posts_per_page' => 5, 'orderby' => 'modified', 'order' => 'DESC' ) ); $drafts =& $drafts_query->posts; } if ( $drafts && is_array( $drafts ) ) { $list = array(); foreach ( $drafts as $draft ) { $url = get_edit_post_link( $draft->ID ); $title = _draft_or_post_title( $draft->ID ); $item = "

" . esc_html($title) . " " . get_the_time( get_option( 'date_format' ), $draft ) . '

'; if ( $the_content = preg_split( '#\s#', strip_tags( $draft->post_content ), 11, PREG_SPLIT_NO_EMPTY ) ) $item .= '

' . join( ' ', array_slice( $the_content, 0, 10 ) ) . ( 10 < count( $the_content ) ? '…' : '' ) . '

'; $list[] = $item; } ?>
  • \n
  • ", $list ); ?>

get_results( "SELECT * FROM $wpdb->comments c LEFT JOIN $wpdb->posts p ON c.comment_post_ID = p.ID WHERE p.post_status != 'trash' ORDER BY c.comment_date_gmt DESC LIMIT $start, 50" ) ) { foreach ( $possible as $comment ) { if ( count( $comments ) >= $total_items ) break; if ( in_array( $comment->comment_approved, $allowed_states ) && current_user_can( 'read_post', $comment->comment_post_ID ) ) $comments[] = $comment; } $start = $start + 50; } if ( $comments ) : ?>

comment_post_ID ); $comment_post_title = strip_tags(get_the_title( $comment->comment_post_ID )); $comment_post_link = "$comment_post_title"; $comment_link = '#'; $actions_string = ''; if ( current_user_can( 'edit_comment', $comment->comment_ID ) ) { // preorder it: Approve | Reply | Edit | Spam | Trash $actions = array( 'approve' => '', 'unapprove' => '', 'reply' => '', 'edit' => '', 'spam' => '', 'trash' => '', 'delete' => '' ); $del_nonce = esc_html( '_wpnonce=' . wp_create_nonce( "delete-comment_$comment->comment_ID" ) ); $approve_nonce = esc_html( '_wpnonce=' . wp_create_nonce( "approve-comment_$comment->comment_ID" ) ); $approve_url = esc_url( "comment.php?action=approvecomment&p=$comment->comment_post_ID&c=$comment->comment_ID&$approve_nonce" ); $unapprove_url = esc_url( "comment.php?action=unapprovecomment&p=$comment->comment_post_ID&c=$comment->comment_ID&$approve_nonce" ); $spam_url = esc_url( "comment.php?action=spamcomment&p=$comment->comment_post_ID&c=$comment->comment_ID&$del_nonce" ); $trash_url = esc_url( "comment.php?action=trashcomment&p=$comment->comment_post_ID&c=$comment->comment_ID&$del_nonce" ); $delete_url = esc_url( "comment.php?action=deletecomment&p=$comment->comment_post_ID&c=$comment->comment_ID&$del_nonce" ); $actions['approve'] = "" . __( 'Approve' ) . ''; $actions['unapprove'] = "" . __( 'Unapprove' ) . ''; $actions['edit'] = "". __('Edit') . ''; $actions['reply'] = '' . __('Reply') . ''; $actions['spam'] = "" . /* translators: mark as spam link */ _x( 'Spam', 'verb' ) . ''; if ( !EMPTY_TRASH_DAYS ) $actions['delete'] = "" . __('Delete Permanently') . ''; else $actions['trash'] = "" . _x('Trash', 'verb') . ''; $actions = apply_filters( 'comment_row_actions', array_filter($actions), $comment ); $i = 0; foreach ( $actions as $action => $link ) { ++$i; ( ( ('approve' == $action || 'unapprove' == $action) && 2 === $i ) || 1 === $i ) ? $sep = '' : $sep = ' | '; // Reply and quickedit need a hide-if-no-js span if ( 'reply' == $action || 'quickedit' == $action ) $action .= ' hide-if-no-js'; $actions_string .= "$sep$link"; } } ?>
comment_ID) ) ); ?>> comment_type || 'comment' == $comment->comment_type ) : ?>

' . get_comment_author_link() . '', $comment_post_link.' '.$comment_link, ' ' . __( '[Pending]' ) . '' ); ?>

comment_type ) : case 'pingback' : $type = __( 'Pingback' ); break; case 'trackback' : $type = __( 'Trackback' ); break; default : $type = ucwords( $comment->comment_type ); endswitch; $type = esc_html( $type ); ?>

$type", $comment_post_link." ".$comment_link ); ?>

'; echo '

'; } function wp_dashboard_incoming_links() { echo '

' . __( 'Loading…' ) . '

' . __('This widget requires JavaScript.') . '

'; } /** * Display incoming links dashboard widget content. * * @since 2.5.0 */ function wp_dashboard_incoming_links_output() { $widgets = get_option( 'dashboard_widget_options' ); @extract( @$widgets['dashboard_incoming_links'], EXTR_SKIP ); $rss = fetch_feed( $url ); if ( is_wp_error($rss) ) { if ( is_admin() || current_user_can('manage_options') ) { echo '

'; printf(__('RSS Error: %s'), $rss->get_error_message()); echo '

'; } return; } if ( !$rss->get_item_quantity() ) { echo '

' . __('This dashboard widget queries Google Blog Search so that when another blog links to your site it will show up here. It has found no incoming links… yet. It’s okay — there is no rush.') . "

\n"; $rss->__destruct(); unset($rss); return; } echo "
    \n"; if ( !isset($items) ) $items = 10; foreach ( $rss->get_items(0, $items) as $item ) { $publisher = ''; $site_link = ''; $link = ''; $content = ''; $date = ''; $link = esc_url( strip_tags( $item->get_link() ) ); $author = $item->get_author(); if ( $author ) { $site_link = esc_url( strip_tags( $author->get_link() ) ); if ( !$publisher = esc_html( strip_tags( $author->get_name() ) ) ) $publisher = __( 'Somebody' ); } else { $publisher = __( 'Somebody' ); } if ( $site_link ) $publisher = "$publisher"; else $publisher = "$publisher"; $content = $item->get_content(); $content = wp_html_excerpt($content, 50) . ' ...'; if ( $link ) /* translators: incoming links feed, %1$s is other person, %3$s is content */ $text = __( '%1$s linked here saying, "%3$s"' ); else /* translators: incoming links feed, %1$s is other person, %3$s is content */ $text = __( '%1$s linked here saying, "%3$s"' ); if ( !empty($show_date) ) { if ( !empty($show_author) || !empty($show_summary) ) /* translators: incoming links feed, %4$s is the date */ $text .= ' ' . __( 'on %4$s' ); $date = esc_html( strip_tags( $item->get_date() ) ); $date = strtotime( $date ); $date = gmdate( get_option( 'date_format' ), $date ); } echo "\t
  • " . sprintf( $text, $publisher, $link, $content, $date ) . "
  • \n"; } echo "
\n"; $rss->__destruct(); unset($rss); } function wp_dashboard_incoming_links_control() { wp_dashboard_rss_control( 'dashboard_incoming_links', array( 'title' => false, 'show_summary' => false, 'show_author' => false ) ); } function wp_dashboard_primary() { echo '

' . __( 'Loading…' ) . '

' . __('This widget requires JavaScript.') . '

'; } function wp_dashboard_primary_control() { wp_dashboard_rss_control( 'dashboard_primary' ); } /** * {@internal Missing Short Description}} * * @since 2.5.0 * * @param string $widget_id */ function wp_dashboard_rss_output( $widget_id ) { $widgets = get_option( 'dashboard_widget_options' ); echo '
'; wp_widget_rss_output( $widgets[$widget_id] ); echo "
"; } function wp_dashboard_secondary() { echo '

' . __( 'Loading…' ) . '

' . __('This widget requires JavaScript.') . '

'; } function wp_dashboard_secondary_control() { wp_dashboard_rss_control( 'dashboard_secondary' ); } /** * Display secondary dashboard RSS widget feed. * * @since 2.5.0 * * @return unknown */ function wp_dashboard_secondary_output() { $widgets = get_option( 'dashboard_widget_options' ); @extract( @$widgets['dashboard_secondary'], EXTR_SKIP ); $rss = @fetch_feed( $url ); if ( is_wp_error($rss) ) { if ( is_admin() || current_user_can('manage_options') ) { echo '

'; printf(__('RSS Error: %s'), $rss->get_error_message()); echo '

'; } } elseif ( !$rss->get_item_quantity() ) { $rss->__destruct(); unset($rss); return false; } else { echo '
'; wp_widget_rss_output( $rss, $widgets['dashboard_secondary'] ); echo '
'; $rss->__destruct(); unset($rss); } } function wp_dashboard_plugins() { echo '

' . __( 'Loading…' ) . '

' . __('This widget requires JavaScript.') . '

'; } /** * Display plugins most popular, newest plugins, and recently updated widget text. * * @since 2.5.0 */ function wp_dashboard_plugins_output() { $popular = fetch_feed( 'http://wordpress.org/extend/plugins/rss/browse/popular/' ); $new = fetch_feed( 'http://wordpress.org/extend/plugins/rss/browse/new/' ); $updated = fetch_feed( 'http://wordpress.org/extend/plugins/rss/browse/updated/' ); if ( false === $plugin_slugs = get_transient( 'plugin_slugs' ) ) { $plugin_slugs = array_keys( get_plugins() ); set_transient( 'plugin_slugs', $plugin_slugs, 86400 ); } foreach ( array( 'popular' => __('Most Popular'), 'new' => __('Newest Plugins'), 'updated' => __('Recently Updated') ) as $feed => $label ) { if ( is_wp_error($$feed) || !$$feed->get_item_quantity() ) continue; $items = $$feed->get_items(0, 5); // Pick a random, non-installed plugin while ( true ) { // Abort this foreach loop iteration if there's no plugins left of this type if ( 0 == count($items) ) continue 2; $item_key = array_rand($items); $item = $items[$item_key]; list($link, $frag) = explode( '#', $item->get_link() ); $link = esc_url($link); if ( preg_match( '|/([^/]+?)/?$|', $link, $matches ) ) $slug = $matches[1]; else { unset( $items[$item_key] ); continue; } // Is this random plugin's slug already installed? If so, try again. reset( $plugin_slugs ); foreach ( $plugin_slugs as $plugin_slug ) { if ( $slug == substr( $plugin_slug, 0, strlen( $slug ) ) ) { unset( $items[$item_key] ); continue 2; } } // If we get to this point, then the random plugin isn't installed and we can stop the while(). break; } // Eliminate some common badly formed plugin descriptions while ( ( null !== $item_key = array_rand($items) ) && false !== strpos( $items[$item_key]->get_description(), 'Plugin Name:' ) ) unset($items[$item_key]); if ( !isset($items[$item_key]) ) continue; // current bbPress feed item titles are: user on "topic title" if ( preg_match( '/"(.*)"/s', $item->get_title(), $matches ) ) $title = $matches[1]; else // but let's make it forward compatible if things change $title = $item->get_title(); $title = esc_html( $title ); $description = esc_html( strip_tags(@html_entity_decode($item->get_description(), ENT_QUOTES, get_option('blog_charset'))) ); $ilink = wp_nonce_url('plugin-install.php?tab=plugin-information&plugin=' . $slug, 'install-plugin_' . $slug) . '&TB_iframe=true&width=600&height=800'; echo "

$label

\n"; echo "
$title
 (" . __( 'Install' ) . ")\n"; echo "

$description

\n"; $$feed->__destruct(); unset($$feed); } } /** * Checks to see if all of the feed url in $check_urls are cached. * * If $check_urls is empty, look for the rss feed url found in the dashboard * widget optios of $widget_id. If cached, call $callback, a function that * echoes out output for this widget. If not cache, echo a "Loading..." stub * which is later replaced by AJAX call (see top of /wp-admin/index.php) * * @since 2.5.0 * * @param string $widget_id * @param callback $callback * @param array $check_urls RSS feeds * @return bool False on failure. True on success. */ function wp_dashboard_cached_rss_widget( $widget_id, $callback, $check_urls = array() ) { $loading = '

' . __( 'Loading…' ) . '

'; if ( empty($check_urls) ) { $widgets = get_option( 'dashboard_widget_options' ); if ( empty($widgets[$widget_id]['url']) ) { echo $loading; return false; } $check_urls = array( $widgets[$widget_id]['url'] ); } include_once ABSPATH . WPINC . '/class-feed.php'; foreach ( $check_urls as $check_url ) { $cache = new WP_Feed_Cache_Transient('', md5($check_url), ''); if ( ! $cache->load() ) { echo $loading; return false; } } if ( $callback && is_callable( $callback ) ) { $args = array_slice( func_get_args(), 2 ); array_unshift( $args, $widget_id ); call_user_func_array( $callback, $args ); } return true; } /* Dashboard Widgets Controls */ // Calls widget_control callback /** * Calls widget control callback. * * @since 2.5.0 * * @param int $widget_control_id Registered Widget ID. */ function wp_dashboard_trigger_widget_control( $widget_control_id = false ) { global $wp_dashboard_control_callbacks; if ( is_scalar($widget_control_id) && $widget_control_id && isset($wp_dashboard_control_callbacks[$widget_control_id]) && is_callable($wp_dashboard_control_callbacks[$widget_control_id]) ) { call_user_func( $wp_dashboard_control_callbacks[$widget_control_id], '', array( 'id' => $widget_control_id, 'callback' => $wp_dashboard_control_callbacks[$widget_control_id] ) ); } } /** * The RSS dashboard widget control. * * Sets up $args to be used as input to wp_widget_rss_form(). Handles POST data * from RSS-type widgets. * * @since 2.5.0 * * @param string $widget_id * @param array $form_inputs */ function wp_dashboard_rss_control( $widget_id, $form_inputs = array() ) { if ( !$widget_options = get_option( 'dashboard_widget_options' ) ) $widget_options = array(); if ( !isset($widget_options[$widget_id]) ) $widget_options[$widget_id] = array(); $number = 1; // Hack to use wp_widget_rss_form() $widget_options[$widget_id]['number'] = $number; if ( 'POST' == $_SERVER['REQUEST_METHOD'] && isset($_POST['widget-rss'][$number]) ) { $_POST['widget-rss'][$number] = stripslashes_deep( $_POST['widget-rss'][$number] ); $widget_options[$widget_id] = wp_widget_rss_process( $_POST['widget-rss'][$number] ); // title is optional. If black, fill it if possible if ( !$widget_options[$widget_id]['title'] && isset($_POST['widget-rss'][$number]['title']) ) { $rss = fetch_feed($widget_options[$widget_id]['url']); if ( is_wp_error($rss) ) { $widget_options[$widget_id]['title'] = htmlentities(__('Unknown Feed')); } else { $widget_options[$widget_id]['title'] = htmlentities(strip_tags($rss->get_title())); $rss->__destruct(); unset($rss); } } update_option( 'dashboard_widget_options', $widget_options ); } wp_widget_rss_form( $widget_options[$widget_id], $form_inputs ); } // Display File upload quota on dashboard function wp_dashboard_quota() { if ( !is_multisite() || !current_user_can('edit_posts') || get_site_option( 'upload_space_check_disabled' ) ) return true; $quota = get_space_allowed(); $used = get_dirsize( BLOGUPLOADDIR ) / 1024 / 1024; if ( $used > $quota ) $percentused = '100'; else $percentused = ( $used / $quota ) * 100; $used_color = ( $percentused < 70 ) ? ( ( $percentused >= 40 ) ? 'waiting' : 'approved' ) : 'spam'; $used = round( $used, 2 ); $percentused = number_format( $percentused ); ?>

%2$sMB' ), esc_url( admin_url( 'upload.php' ) ), $quota ); ?>
%2$sMB (%3$s%%)' ), esc_url( admin_url( 'upload.php' ) ), $used, $percentused ); ?>

wp-admin/includes/deprecated.php0000644002347300047320000004052511656660351016556 0ustar vonfabpsacln 0) ); if ( $categories ) { foreach ( $categories as $category ) { if ( $currentcat != $category->term_id && $parent == $category->parent) { $pad = str_repeat( '– ', $level ); $category->name = esc_html( $category->name ); echo "\n\t"; wp_dropdown_cats( $currentcat, $currentparent, $category->term_id, $level +1, $categories ); } } } else { return false; } } /** * Register a setting and its sanitization callback * * @since 2.7.0 * @deprecated 3.0.0 * @deprecated Use register_setting() * @see register_setting() * * @param string $option_group A settings group name. Should correspond to a whitelisted option key name. * Default whitelisted option key names include "general," "discussion," and "reading," among others. * @param string $option_name The name of an option to sanitize and save. * @param unknown_type $sanitize_callback A callback function that sanitizes the option's value. * @return unknown */ function add_option_update_handler( $option_group, $option_name, $sanitize_callback = '' ) { _deprecated_function( __FUNCTION__, '3.0', 'register_setting()' ); return register_setting( $option_group, $option_name, $sanitize_callback ); } /** * Unregister a setting * * @since 2.7.0 * @deprecated 3.0.0 * @deprecated Use unregister_setting() * @see unregister_setting() * * @param unknown_type $option_group * @param unknown_type $option_name * @param unknown_type $sanitize_callback * @return unknown */ function remove_option_update_handler( $option_group, $option_name, $sanitize_callback = '' ) { _deprecated_function( __FUNCTION__, '3.0', 'unregister_setting()' ); return unregister_setting( $option_group, $option_name, $sanitize_callback ); } /** * Determines the language to use for CodePress syntax highlighting. * * @since 2.8.0 * @deprecated 3.0.0 * * @param string $filename **/ function codepress_get_lang( $filename ) { _deprecated_function( __FUNCTION__, '3.0' ); return; } /** * Adds Javascript required to make CodePress work on the theme/plugin editors. * * @since 2.8.0 * @deprecated 3.0.0 **/ function codepress_footer_js() { _deprecated_function( __FUNCTION__, '3.0' ); return; } /** * Determine whether to use CodePress. * * @since 2.8 * @deprecated 3.0.0 **/ function use_codepress() { _deprecated_function( __FUNCTION__, '3.0' ); return; } /** * @deprecated 3.1.0 * * @return array List of user IDs. */ function get_author_user_ids() { _deprecated_function( __FUNCTION__, '3.1', 'get_users()' ); global $wpdb; if ( !is_multisite() ) $level_key = $wpdb->get_blog_prefix() . 'user_level'; else $level_key = $wpdb->get_blog_prefix() . 'capabilities'; // wpmu site admins don't have user_levels return $wpdb->get_col( $wpdb->prepare("SELECT user_id FROM $wpdb->usermeta WHERE meta_key = %s AND meta_value != '0'", $level_key) ); } /** * @deprecated 3.1.0 * * @param int $user_id User ID. * @return array|bool List of editable authors. False if no editable users. */ function get_editable_authors( $user_id ) { _deprecated_function( __FUNCTION__, '3.1', 'get_users()' ); 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); } /** * @deprecated 3.1.0 * * @param int $user_id User ID. * @param bool $exclude_zeros Optional, default is true. Whether to exclude zeros. * @return unknown */ function get_editable_user_ids( $user_id, $exclude_zeros = true, $post_type = 'post' ) { _deprecated_function( __FUNCTION__, '3.1', 'get_users()' ); global $wpdb; $user = new WP_User( $user_id ); $post_type_obj = get_post_type_object($post_type); if ( ! $user->has_cap($post_type_obj->cap->edit_others_posts) ) { if ( $user->has_cap($post_type_obj->cap->edit_posts) || ! $exclude_zeros ) return array($user->id); else return array(); } if ( !is_multisite() ) $level_key = $wpdb->get_blog_prefix() . 'user_level'; else $level_key = $wpdb->get_blog_prefix() . 'capabilities'; // wpmu site admins don't have user_levels $query = $wpdb->prepare("SELECT user_id FROM $wpdb->usermeta WHERE meta_key = %s", $level_key); if ( $exclude_zeros ) $query .= " AND meta_value != '0'"; return $wpdb->get_col( $query ); } /** * @deprecated 3.1.0 */ function get_nonauthor_user_ids() { _deprecated_function( __FUNCTION__, '3.1', 'get_users()' ); global $wpdb; if ( !is_multisite() ) $level_key = $wpdb->get_blog_prefix() . 'user_level'; else $level_key = $wpdb->get_blog_prefix() . 'capabilities'; // wpmu site admins don't have user_levels return $wpdb->get_col( $wpdb->prepare("SELECT user_id FROM $wpdb->usermeta WHERE meta_key = %s AND meta_value = '0'", $level_key) ); } if ( !class_exists('WP_User_Search') ) : /** * WordPress User Search class. * * @since 2.1.0 * @deprecated 3.1.0 */ class WP_User_Search { /** * {@internal Missing Description}} * * @since 2.1.0 * @access private * @var unknown_type */ var $results; /** * {@internal Missing Description}} * * @since 2.1.0 * @access private * @var unknown_type */ var $search_term; /** * Page number. * * @since 2.1.0 * @access private * @var int */ var $page; /** * Role name that users have. * * @since 2.5.0 * @access private * @var string */ var $role; /** * Raw page number. * * @since 2.1.0 * @access private * @var int|bool */ var $raw_page; /** * Amount of users to display per page. * * @since 2.1.0 * @access public * @var int */ var $users_per_page = 50; /** * {@internal Missing Description}} * * @since 2.1.0 * @access private * @var unknown_type */ var $first_user; /** * {@internal Missing Description}} * * @since 2.1.0 * @access private * @var int */ var $last_user; /** * {@internal Missing Description}} * * @since 2.1.0 * @access private * @var string */ var $query_limit; /** * {@internal Missing Description}} * * @since 3.0.0 * @access private * @var string */ var $query_orderby; /** * {@internal Missing Description}} * * @since 3.0.0 * @access private * @var string */ var $query_from; /** * {@internal Missing Description}} * * @since 3.0.0 * @access private * @var string */ var $query_where; /** * {@internal Missing Description}} * * @since 2.1.0 * @access private * @var int */ var $total_users_for_query = 0; /** * {@internal Missing Description}} * * @since 2.1.0 * @access private * @var bool */ var $too_many_total_users = false; /** * {@internal Missing Description}} * * @since 2.1.0 * @access private * @var unknown_type */ var $search_errors; /** * {@internal Missing Description}} * * @since 2.7.0 * @access private * @var unknown_type */ var $paging_text; /** * PHP4 Constructor - Sets up the object properties. * * @since 2.1.0 * * @param string $search_term Search terms string. * @param int $page Optional. Page ID. * @param string $role Role name. * @return WP_User_Search */ function WP_User_Search ($search_term = '', $page = '', $role = '') { _deprecated_function( __FUNCTION__, '3.1', 'WP_User_Query' ); $this->search_term = $search_term; $this->raw_page = ( '' == $page ) ? false : (int) $page; $this->page = (int) ( '' == $page ) ? 1 : $page; $this->role = $role; $this->prepare_query(); $this->query(); $this->prepare_vars_for_template_usage(); $this->do_paging(); } /** * {@internal Missing Short Description}} * * {@internal Missing Long Description}} * * @since 2.1.0 * @access public */ function prepare_query() { global $wpdb; $this->first_user = ($this->page - 1) * $this->users_per_page; $this->query_limit = $wpdb->prepare(" LIMIT %d, %d", $this->first_user, $this->users_per_page); $this->query_orderby = ' ORDER BY user_login'; $search_sql = ''; if ( $this->search_term ) { $searches = array(); $search_sql = 'AND ('; foreach ( array('user_login', 'user_nicename', 'user_email', 'user_url', 'display_name') as $col ) $searches[] = $col . " LIKE '%$this->search_term%'"; $search_sql .= implode(' OR ', $searches); $search_sql .= ')'; } $this->query_from = " FROM $wpdb->users"; $this->query_where = " WHERE 1=1 $search_sql"; if ( $this->role ) { $this->query_from .= " INNER JOIN $wpdb->usermeta ON $wpdb->users.ID = $wpdb->usermeta.user_id"; $this->query_where .= $wpdb->prepare(" AND $wpdb->usermeta.meta_key = '{$wpdb->prefix}capabilities' AND $wpdb->usermeta.meta_value LIKE %s", '%' . $this->role . '%'); } elseif ( is_multisite() ) { $level_key = $wpdb->prefix . 'capabilities'; // wpmu site admins don't have user_levels $this->query_from .= ", $wpdb->usermeta"; $this->query_where .= " AND $wpdb->users.ID = $wpdb->usermeta.user_id AND meta_key = '{$level_key}'"; } do_action_ref_array( 'pre_user_search', array( &$this ) ); } /** * {@internal Missing Short Description}} * * {@internal Missing Long Description}} * * @since 2.1.0 * @access public */ function query() { global $wpdb; $this->results = $wpdb->get_col("SELECT DISTINCT($wpdb->users.ID)" . $this->query_from . $this->query_where . $this->query_orderby . $this->query_limit); if ( $this->results ) $this->total_users_for_query = $wpdb->get_var("SELECT COUNT(DISTINCT($wpdb->users.ID))" . $this->query_from . $this->query_where); // no limit else $this->search_errors = new WP_Error('no_matching_users_found', __('No matching users were found!')); } /** * {@internal Missing Short Description}} * * {@internal Missing Long Description}} * * @since 2.1.0 * @access public */ function prepare_vars_for_template_usage() { $this->search_term = stripslashes($this->search_term); // done with DB, from now on we want slashes gone } /** * {@internal Missing Short Description}} * * {@internal Missing Long Description}} * * @since 2.1.0 * @access public */ function do_paging() { if ( $this->total_users_for_query > $this->users_per_page ) { // have to page the results $args = array(); if( ! empty($this->search_term) ) $args['usersearch'] = urlencode($this->search_term); if( ! empty($this->role) ) $args['role'] = urlencode($this->role); $this->paging_text = paginate_links( array( 'total' => ceil($this->total_users_for_query / $this->users_per_page), 'current' => $this->page, 'base' => 'users.php?%_%', 'format' => 'userspage=%#%', 'add_args' => $args ) ); if ( $this->paging_text ) { $this->paging_text = sprintf( '' . __( 'Displaying %s–%s of %s' ) . '%s', number_format_i18n( ( $this->page - 1 ) * $this->users_per_page + 1 ), number_format_i18n( min( $this->page * $this->users_per_page, $this->total_users_for_query ) ), number_format_i18n( $this->total_users_for_query ), $this->paging_text ); } } } /** * {@internal Missing Short Description}} * * {@internal Missing Long Description}} * * @since 2.1.0 * @access public * * @return unknown */ function get_results() { return (array) $this->results; } /** * Displaying paging text. * * @see do_paging() Builds paging text. * * @since 2.1.0 * @access public */ function page_links() { echo $this->paging_text; } /** * Whether paging is enabled. * * @see do_paging() Builds paging text. * * @since 2.1.0 * @access public * * @return bool */ function results_are_paged() { if ( $this->paging_text ) return true; return false; } /** * Whether there are search terms. * * @since 2.1.0 * @access public * * @return bool */ function is_search() { if ( $this->search_term ) return true; return false; } } endif; /** * Retrieve editable posts from other users. * * @deprecated 3.1.0 * * @param int $user_id User ID to not retrieve posts from. * @param string $type Optional, defaults to 'any'. Post type to retrieve, can be 'draft' or 'pending'. * @return array List of posts from others. */ function get_others_unpublished_posts($user_id, $type='any') { _deprecated_function( __FUNCTION__, '3.1' ); global $wpdb; $editable = get_editable_user_ids( $user_id ); if ( in_array($type, array('draft', 'pending')) ) $type_sql = " post_status = '$type' "; else $type_sql = " ( post_status = 'draft' OR post_status = 'pending' ) "; $dir = ( 'pending' == $type ) ? 'ASC' : 'DESC'; if ( !$editable ) { $other_unpubs = ''; } else { $editable = join(',', $editable); $other_unpubs = $wpdb->get_results( $wpdb->prepare("SELECT ID, post_title, post_author FROM $wpdb->posts WHERE post_type = 'post' AND $type_sql AND post_author IN ($editable) AND post_author != %d ORDER BY post_modified $dir", $user_id) ); } return apply_filters('get_others_drafts', $other_unpubs); } /** * Retrieve drafts from other users. * * @deprecated 3.1.0 * * @param int $user_id User ID. * @return array List of drafts from other users. */ function get_others_drafts($user_id) { _deprecated_function( __FUNCTION__, '3.1' ); return get_others_unpublished_posts($user_id, 'draft'); } /** * Retrieve pending review posts from other users. * * @deprecated 3.1.0 * * @param int $user_id User ID. * @return array List of posts with pending review post type from other users. */ function get_others_pending($user_id) { _deprecated_function( __FUNCTION__, '3.1' ); return get_others_unpublished_posts($user_id, 'pending'); } wp-admin/includes/export.php0000644002347300047320000003612611656660351016001 0ustar vonfabpsacln 'all', 'author' => false, 'category' => false, 'start_date' => false, 'end_date' => false, 'status' => false, ); $args = wp_parse_args( $args, $defaults ); do_action( 'export_wp' ); $sitename = sanitize_key( get_bloginfo( 'name' ) ); if ( ! empty($sitename) ) $sitename .= '.'; $filename = $sitename . 'wordpress.' . date( 'Y-m-d' ) . '.xml'; header( 'Content-Description: File Transfer' ); header( 'Content-Disposition: attachment; filename=' . $filename ); header( 'Content-Type: text/xml; charset=' . get_option( 'blog_charset' ), true ); if ( 'all' != $args['content'] && post_type_exists( $args['content'] ) ) { $ptype = get_post_type_object( $args['content'] ); if ( ! $ptype->can_export ) $args['content'] = 'post'; $where = $wpdb->prepare( "{$wpdb->posts}.post_type = %s", $args['content'] ); } else { $post_types = get_post_types( array( 'can_export' => true ) ); $esses = array_fill( 0, count($post_types), '%s' ); $where = $wpdb->prepare( "{$wpdb->posts}.post_type IN (". implode(',',$esses) .")", $post_types ); } if ( $args['status'] && ( 'post' == $args['content'] || 'page' == $args['content'] ) ) $where .= $wpdb->prepare( " AND {$wpdb->posts}.post_status = %s", $args['status'] ); else $where .= " AND {$wpdb->posts}.post_status != 'auto-draft'"; $join = ''; if ( $args['category'] && 'post' == $args['content'] ) { if ( $term = term_exists( $args['category'], 'category' ) ) { $join = "INNER JOIN {$wpdb->term_relationships} ON ({$wpdb->posts}.ID = {$wpdb->term_relationships}.object_id)"; $where .= $wpdb->prepare( " AND {$wpdb->term_relationships}.term_taxonomy_id = %d", $term['term_taxonomy_id'] ); } } if ( 'post' == $args['content'] || 'page' == $args['content'] ) { if ( $args['author'] ) $where .= $wpdb->prepare( " AND {$wpdb->posts}.post_author = %d", $args['author'] ); if ( $args['start_date'] ) $where .= $wpdb->prepare( " AND {$wpdb->posts}.post_date >= %s", date( 'Y-m-d', strtotime($args['start_date']) ) ); if ( $args['end_date'] ) $where .= $wpdb->prepare( " AND {$wpdb->posts}.post_date < %s", date( 'Y-m-d', strtotime('+1 month', strtotime($args['end_date'])) ) ); } // grab a snapshot of post IDs, just in case it changes during the export $post_ids = $wpdb->get_col( "SELECT ID FROM {$wpdb->posts} $join WHERE $where" ); // get the requested terms ready, empty unless posts filtered by category or all content $cats = $tags = $terms = array(); if ( isset( $term ) && $term ) { $cat = get_term( $term['term_id'], 'category' ); $cats = array( $cat->term_id => $cat ); unset( $term, $cat ); } else if ( 'all' == $args['content'] ) { $categories = (array) get_categories( array( 'get' => 'all' ) ); $tags = (array) get_tags( array( 'get' => 'all' ) ); $custom_taxonomies = get_taxonomies( array( '_builtin' => false ) ); $custom_terms = (array) get_terms( $custom_taxonomies, array( 'get' => 'all' ) ); // put categories in order with no child going before its parent while ( $cat = array_shift( $categories ) ) { if ( $cat->parent == 0 || isset( $cats[$cat->parent] ) ) $cats[$cat->term_id] = $cat; else $categories[] = $cat; } // put terms in order with no child going before its parent while ( $t = array_shift( $custom_terms ) ) { if ( $t->parent == 0 || isset( $terms[$t->parent] ) ) $terms[$t->term_id] = $t; else $custom_terms[] = $t; } unset( $categories, $custom_taxonomies, $custom_terms ); } /** * Wrap given string in XML CDATA tag. * * @since 2.1.0 * * @param string $str String to wrap in XML CDATA tag. */ function wxr_cdata( $str ) { if ( seems_utf8( $str ) == false ) $str = utf8_encode( $str ); // $str = ent2ncr(esc_html($str)); $str = ""; return $str; } /** * Return the URL of the site * * @since 2.5.0 * * @return string Site URL. */ function wxr_site_url() { // ms: the base url if ( is_multisite() ) return network_home_url(); // wp: the blog url else return get_bloginfo_rss( 'url' ); } /** * Output a cat_name XML tag from a given category object * * @since 2.1.0 * * @param object $category Category Object */ function wxr_cat_name( $category ) { if ( empty( $category->name ) ) return; echo '' . wxr_cdata( $category->name ) . ''; } /** * Output a category_description XML tag from a given category object * * @since 2.1.0 * * @param object $category Category Object */ function wxr_category_description( $category ) { if ( empty( $category->description ) ) return; echo '' . wxr_cdata( $category->description ) . ''; } /** * Output a tag_name XML tag from a given tag object * * @since 2.3.0 * * @param object $tag Tag Object */ function wxr_tag_name( $tag ) { if ( empty( $tag->name ) ) return; echo '' . wxr_cdata( $tag->name ) . ''; } /** * Output a tag_description XML tag from a given tag object * * @since 2.3.0 * * @param object $tag Tag Object */ function wxr_tag_description( $tag ) { if ( empty( $tag->description ) ) return; echo '' . wxr_cdata( $tag->description ) . ''; } /** * Output a term_name XML tag from a given term object * * @since 2.9.0 * * @param object $term Term Object */ function wxr_term_name( $term ) { if ( empty( $term->name ) ) return; echo '' . wxr_cdata( $term->name ) . ''; } /** * Output a term_description XML tag from a given term object * * @since 2.9.0 * * @param object $term Term Object */ function wxr_term_description( $term ) { if ( empty( $term->description ) ) return; echo '' . wxr_cdata( $term->description ) . ''; } /** * Output list of authors with posts * * @since 3.1.0 */ function wxr_authors_list() { global $wpdb; $authors = array(); $results = $wpdb->get_results( "SELECT DISTINCT post_author FROM $wpdb->posts" ); foreach ( (array) $results as $result ) $authors[] = get_userdata( $result->post_author ); $authors = array_filter( $authors ); foreach( $authors as $author ) { echo "\t"; echo '' . $author->ID . ''; echo '' . $author->user_login . ''; echo '' . $author->user_email . ''; echo '' . wxr_cdata( $author->display_name ) . ''; echo '' . wxr_cdata( $author->user_firstname ) . ''; echo '' . wxr_cdata( $author->user_lastname ) . ''; echo "\n"; } } /** * Ouput all navigation menu terms * * @since 3.1.0 */ function wxr_nav_menu_terms() { $nav_menus = wp_get_nav_menus(); if ( empty( $nav_menus ) || ! is_array( $nav_menus ) ) return; foreach ( $nav_menus as $menu ) { echo "\t{$menu->term_id}nav_menu{$menu->slug}"; wxr_term_name( $menu ); echo "\n"; } } /** * Output list of taxonomy terms, in XML tag format, associated with a post * * @since 2.3.0 */ function wxr_post_taxonomy() { global $post; $taxonomies = get_object_taxonomies( $post->post_type ); if ( empty( $taxonomies ) ) return; $terms = wp_get_object_terms( $post->ID, $taxonomies ); foreach ( (array) $terms as $term ) { echo "\t\ttaxonomy}\" nicename=\"{$term->slug}\">" . wxr_cdata( $term->name ) . "\n"; } } echo '\n"; ?> <?php bloginfo_rss( 'name' ); ?> term_id ?>slug; ?>parent ? $cats[$c->parent]->slug : ''; ?> term_id ?>slug; ?> term_id ?>taxonomy; ?>slug; ?>parent ? $terms[$t->parent]->slug : ''; ?> in_the_loop = true; // Fake being in the loop. // fetch 20 posts at a time rather than loading the entire table into memory while ( $next_posts = array_splice( $post_ids, 0, 20 ) ) { $where = "WHERE ID IN (" . join( ',', $next_posts ) . ")"; $posts = $wpdb->get_results( "SELECT * FROM {$wpdb->posts} $where" ); // Begin Loop foreach ( $posts as $post ) { setup_postdata( $post ); $is_sticky = is_sticky( $post->ID ) ? 1 : 0; ?> <?php echo apply_filters( 'the_title_rss', $post->post_title ); ?> post_content ) ); ?> post_excerpt ) ); ?> ID; ?> post_date; ?> post_date_gmt; ?> comment_status; ?> ping_status; ?> post_name; ?> post_status; ?> post_parent; ?> menu_order; ?> post_type; ?> post_password; ?> post_type == 'attachment' ) : ?> ID ); ?> get_results( $wpdb->prepare( "SELECT * FROM $wpdb->postmeta WHERE post_id = %d", $post->ID ) ); if ( $postmeta ) : foreach( $postmeta as $meta ) : if ( $meta->meta_key != '_edit_lock' ) : ?> meta_key; ?> meta_value ); ?> get_results( $wpdb->prepare( "SELECT * FROM $wpdb->comments WHERE comment_post_ID = %d AND comment_approved <> 'spam'", $post->ID ) ); if ( $comments ) : foreach ( $comments as $c ) : ?> comment_ID; ?> comment_author ); ?> comment_author_email; ?> comment_author_url ); ?> comment_author_IP; ?> comment_date; ?> comment_date_gmt; ?> comment_content ) ?> comment_approved; ?> comment_type; ?> comment_parent; ?> user_id; ?> __( 'Main Index Template' ), 'style.css' => __( 'Stylesheet' ), 'editor-style.css' => __( 'Visual Editor Stylesheet' ), 'editor-style-rtl.css' => __( 'Visual Editor RTL Stylesheet' ), 'rtl.css' => __( 'RTL Stylesheet' ), 'comments.php' => __( 'Comments' ), 'comments-popup.php' => __( 'Popup Comments' ), 'footer.php' => __( 'Footer' ), 'header.php' => __( 'Header' ), 'sidebar.php' => __( 'Sidebar' ), 'archive.php' => __( 'Archives' ), 'author.php' => __( 'Author Template' ), 'tag.php' => __( 'Tag Template' ), 'category.php' => __( 'Category Template' ), 'page.php' => __( 'Page Template' ), 'search.php' => __( 'Search Results' ), 'searchform.php' => __( 'Search Form' ), 'single.php' => __( 'Single Post' ), '404.php' => __( '404 Template' ), 'link.php' => __( 'Links Template' ), 'functions.php' => __( 'Theme Functions' ), 'attachment.php' => __( 'Attachment Template' ), 'image.php' => __('Image Attachment Template'), 'video.php' => __('Video Attachment Template'), 'audio.php' => __('Audio Attachment Template'), 'application.php' => __('Application Attachment 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' ), ); /** * Get the description for standard WordPress theme files and other various standard * WordPress files * * @since 1.5.0 * * @uses _cleanup_header_comment * @uses $wp_file_descriptions * @param string $file Filesystem path or filename * @return string Description of file from $wp_file_descriptions or basename of $file if description doesn't exist */ 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( $file ) && is_file( $file ) ) { $template_data = implode( '', file( $file ) ); if ( preg_match( '|Template Name:(.*)$|mi', $template_data, $name )) return sprintf( __( '%s Page Template' ), _cleanup_header_comment($name[1]) ); } return basename( $file ); } /** * Get the absolute filesystem path to the root of the WordPress installation * * @since 1.5.0 * * @uses get_option * @return string Full filesystem path to the root of the WordPress installation */ function get_home_path() { $home = get_option( 'home' ); $siteurl = get_option( 'siteurl' ); if ( $home != '' && $home != $siteurl ) { $wp_path_rel_to_home = str_replace($home, '', $siteurl); /* $siteurl - $home */ $pos = strpos($_SERVER["SCRIPT_FILENAME"], $wp_path_rel_to_home); $home_path = substr($_SERVER["SCRIPT_FILENAME"], 0, $pos); $home_path = trailingslashit( $home_path ); } else { $home_path = ABSPATH; } return $home_path; } /** * Get the real file system path to a file to edit within the admin * * If the $file is index.php or .htaccess this function will assume it is relative * to the install root, otherwise it is assumed the file is relative to the wp-content * directory * * @since 1.5.0 * * @uses get_home_path * @uses WP_CONTENT_DIR full filesystem path to the wp-content directory * @param string $file filesystem path relative to the WordPress install directory or to the wp-content directory * @return string full file system path to edit */ function get_real_file_to_edit( $file ) { if ('index.php' == $file || '.htaccess' == $file ) { $real_file = get_home_path() . $file; } else { $real_file = WP_CONTENT_DIR . $file; } return $real_file; } /** * Returns a listing of all files in the specified folder and all subdirectories up to 100 levels deep. * The depth of the recursiveness can be controlled by the $levels param. * * @since 2.6.0 * * @param string $folder Full path to folder * @param int $levels (optional) Levels of folders to follow, Default: 100 (PHP Loop limit). * @return bool|array False on failure, Else array of files */ function list_files( $folder = '', $levels = 100 ) { if ( empty($folder) ) return false; if ( ! $levels ) return false; $files = array(); if ( $dir = @opendir( $folder ) ) { while (($file = readdir( $dir ) ) !== false ) { if ( in_array($file, array('.', '..') ) ) continue; if ( is_dir( $folder . '/' . $file ) ) { $files2 = list_files( $folder . '/' . $file, $levels - 1); if ( $files2 ) $files = array_merge($files, $files2 ); else $files[] = $folder . '/' . $file . '/'; } else { $files[] = $folder . '/' . $file; } } } @closedir( $dir ); return $files; } /** * Determines a writable directory for temporary files. * Function's preference is to WP_CONTENT_DIR followed by the return value of sys_get_temp_dir(), before finally defaulting to /tmp/ * * In the event that this function does not find a writable location, It may be overridden by the WP_TEMP_DIR constant in your wp-config.php file. * * @since 2.5.0 * * @return string Writable temporary directory */ function get_temp_dir() { static $temp; if ( defined('WP_TEMP_DIR') ) return trailingslashit(WP_TEMP_DIR); if ( $temp ) return trailingslashit($temp); $temp = WP_CONTENT_DIR . '/'; if ( is_dir($temp) && @is_writable($temp) ) return $temp; if ( function_exists('sys_get_temp_dir') ) { $temp = sys_get_temp_dir(); if ( @is_writable($temp) ) return trailingslashit($temp); } $temp = ini_get('upload_tmp_dir'); if ( is_dir($temp) && @is_writable($temp) ) return trailingslashit($temp); $temp = '/tmp/'; return $temp; } /** * Returns a filename of a Temporary unique file. * Please note that the calling function must unlink() this itself. * * The filename is based off the passed parameter or defaults to the current unix timestamp, * while the directory can either be passed as well, or by leaving it blank, default to a writable temporary directory. * * @since 2.6.0 * * @param string $filename (optional) Filename to base the Unique file off * @param string $dir (optional) Directory to store the file in * @return string a writable filename */ function wp_tempnam($filename = '', $dir = '') { if ( empty($dir) ) $dir = get_temp_dir(); $filename = basename($filename); if ( empty($filename) ) $filename = time(); $filename = preg_replace('|\..*$|', '.tmp', $filename); $filename = $dir . wp_unique_filename($dir, $filename); touch($filename); return $filename; } /** * Make sure that the file that was requested to edit, is allowed to be edited * * Function will die if if you are not allowed to edit the file * * @since 1.5.0 * * @uses wp_die * @uses validate_file * @param string $file file the users is attempting to edit * @param array $allowed_files Array of allowed files to edit, $file must match an entry exactly * @return null */ function validate_file_to_edit( $file, $allowed_files = '' ) { $code = validate_file( $file, $allowed_files ); if (!$code ) return $file; switch ( $code ) { case 1 : wp_die( __('Sorry, can’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’t call files with their real path.' )); case 3 : wp_die( __('Sorry, that file cannot be edited.' )); } } /** * Handle PHP uploads in WordPress, sanitizing file names, checking extensions for mime type, * and moving the file to the appropriate directory within the uploads directory. * * @since 2.0 * * @uses wp_handle_upload_error * @uses apply_filters * @uses is_multisite * @uses wp_check_filetype_and_ext * @uses current_user_can * @uses wp_upload_dir * @uses wp_unique_filename * @uses delete_transient * @param array $file Reference to a single element of $_FILES. Call the function once for each uploaded file. * @param array $overrides Optional. An associative array of names=>values to override default variables with extract( $overrides, EXTR_OVERWRITE ). * @return array 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, $time = null ) { // The default error handler. if ( ! function_exists( 'wp_handle_upload_error' ) ) { function wp_handle_upload_error( &$file, $message ) { return array( 'error'=>$message ); } } $file = apply_filters( 'wp_handle_upload_prefilter', $file ); // You may define your own function and pass the name in $overrides['upload_error_handler'] $upload_error_handler = 'wp_handle_upload_error'; // You may have had one or more 'wp_handle_upload_prefilter' functions error out the file. Handle that gracefully. if ( isset( $file['error'] ) && !is_numeric( $file['error'] ) && $file['error'] ) return $upload_error_handler( $file, $file['error'] ); // You may define your own function and pass the name in $overrides['unique_filename_callback'] $unique_filename_callback = null; // $_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 upload_max_filesize directive in php.ini." ), __( "The uploaded file exceeds the MAX_FILE_SIZE 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." ), __( "File upload stopped by extension." )); // All tests are on by default. Most can be turned off by $override[{test_name}] = false; $test_form = true; $test_size = true; $test_upload = true; // If you override this, you must provide $ext and $type!!!! $test_type = true; $mimes = false; // 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 call_user_func($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 call_user_func($upload_error_handler, $file, $upload_error_strings[$file['error']] ); // A non-empty file will pass this test. if ( $test_size && !($file['size'] > 0 ) ) { if ( is_multisite() ) $error_msg = __( 'File is empty. Please upload something more substantial.' ); else $error_msg = __( 'File is empty. Please upload something more substantial. This error could also be caused by uploads being disabled in your php.ini or by post_max_size being defined as smaller than upload_max_filesize in php.ini.' ); return call_user_func($upload_error_handler, $file, $error_msg); } // A properly uploaded file will pass this test. There should be no reason to override this one. if ( $test_upload && ! @ is_uploaded_file( $file['tmp_name'] ) ) return call_user_func($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_and_ext( $file['tmp_name'], $file['name'], $mimes ); extract( $wp_filetype ); // Check to see if wp_check_filetype_and_ext() determined the filename was incorrect if ( $proper_filename ) $file['name'] = $proper_filename; if ( ( !$type || !$ext ) && !current_user_can( 'unfiltered_upload' ) ) return call_user_func($upload_error_handler, $file, __( 'Sorry, this file type is not permitted for security reasons.' )); if ( !$ext ) $ext = ltrim(strrchr($file['name'], '.'), '.'); if ( !$type ) $type = $file['type']; } else { $type = ''; } // A writable uploads dir will pass this test. Again, there's no point overriding this one. if ( ! ( ( $uploads = wp_upload_dir($time) ) && false === $uploads['error'] ) ) return call_user_func($upload_error_handler, $file, $uploads['error'] ); $filename = wp_unique_filename( $uploads['path'], $file['name'], $unique_filename_callback ); // Move the file to the uploads dir $new_file = $uploads['path'] . "/$filename"; if ( false === @ move_uploaded_file( $file['tmp_name'], $new_file ) ) return $upload_error_handler( $file, sprintf( __('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"; if ( is_multisite() ) delete_transient( 'dirsize_cache' ); return apply_filters( 'wp_handle_upload', array( 'file' => $new_file, 'url' => $url, 'type' => $type ), 'upload' ); } /** * Handle sideloads, which is the process of retriving a media item from another server instead of * a traditional media upload. This process involves sanitizing the filename, checking extensions * for mime type, and moving the file to the appropriate directory within the uploads directory. * * @since 2.6.0 * * @uses wp_handle_upload_error * @uses apply_filters * @uses wp_check_filetype_and_ext * @uses current_user_can * @uses wp_upload_dir * @uses wp_unique_filename * @param array $file an array similar to that of a PHP $_FILES POST array * @param array $overrides Optional. An associative array of names=>values to override default variables with extract( $overrides, EXTR_OVERWRITE ). * @return array 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_sideload( &$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'; // You may define your own function and pass the name in $overrides['unique_filename_callback'] $unique_filename_callback = null; // $_POST['action'] must be set and its value must equal $overrides['action'] or this: $action = 'wp_handle_sideload'; // 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 upload_max_filesize directive in php.ini." ), __( "The uploaded file exceeds the MAX_FILE_SIZE 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." ), __( "File upload stopped by extension." )); // 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; $mimes = false; // 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 ( ! empty( $file['error'] ) ) return $upload_error_handler( $file, $upload_error_strings[$file['error']] ); // A non-empty file will pass this test. if ( $test_size && !(filesize($file['tmp_name']) > 0 ) ) return $upload_error_handler( $file, __( 'File is empty. Please upload something more substantial. This error could also be caused by uploads being disabled in your php.ini.' )); // A properly uploaded file will pass this test. There should be no reason to override this one. if (! @ is_file( $file['tmp_name'] ) ) return $upload_error_handler( $file, __( 'Specified file does not exist.' )); // A correct MIME type will pass this test. Override $mimes or use the upload_mimes filter. if ( $test_type ) { $wp_filetype = wp_check_filetype_and_ext( $file['tmp_name'], $file['name'], $mimes ); extract( $wp_filetype ); // Check to see if wp_check_filetype_and_ext() determined the filename was incorrect if ( $proper_filename ) $file['name'] = $proper_filename; if ( ( !$type || !$ext ) && !current_user_can( 'unfiltered_upload' ) ) return $upload_error_handler( $file, __( 'Sorry, this file type is not permitted for security reasons.' )); if ( !$ext ) $ext = ltrim(strrchr($file['name'], '.'), '.'); if ( !$type ) $type = $file['type']; } // 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'] ); $filename = wp_unique_filename( $uploads['path'], $file['name'], $unique_filename_callback ); // Strip the query strings. $filename = str_replace('?','-', $filename); $filename = str_replace('&','-', $filename); // Move the file to the uploads dir $new_file = $uploads['path'] . "/$filename"; if ( false === @ rename( $file['tmp_name'], $new_file ) ) { return $upload_error_handler( $file, sprintf( __('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 ), 'sideload' ); return $return; } /** * Downloads a url to a local temporary file using the WordPress HTTP Class. * Please note, That the calling function must unlink() the file. * * @since 2.5.0 * * @param string $url the URL of the file to download * @param int $timeout The timeout for the request to download the file default 300 seconds * @return mixed WP_Error on failure, string Filename on success. */ function download_url( $url, $timeout = 300 ) { //WARNING: The file is not automatically deleted, The script must unlink() the file. if ( ! $url ) return new WP_Error('http_no_url', __('Invalid URL Provided.')); $tmpfname = wp_tempnam($url); if ( ! $tmpfname ) return new WP_Error('http_no_file', __('Could not create Temporary file.')); $handle = @fopen($tmpfname, 'wb'); if ( ! $handle ) return new WP_Error('http_no_file', __('Could not create Temporary file.')); $response = wp_remote_get($url, array('timeout' => $timeout)); if ( is_wp_error($response) ) { fclose($handle); unlink($tmpfname); return $response; } if ( $response['response']['code'] != '200' ){ fclose($handle); unlink($tmpfname); return new WP_Error('http_404', trim($response['response']['message'])); } fwrite($handle, $response['body']); fclose($handle); return $tmpfname; } /** * Unzip's a specified ZIP file to a location on the Filesystem via the WordPress Filesystem Abstraction. * Assumes that WP_Filesystem() has already been called and set up. Does not extract a root-level __MACOSX directory, if present. * * Attempts to increase the PHP Memory limit to 256M before uncompressing, * However, The most memory required shouldn't be much larger than the Archive itself. * * @since 2.5.0 * * @param string $file Full path and filename of zip archive * @param string $to Full path on the filesystem to extract archive to * @return mixed WP_Error on failure, True on success */ function unzip_file($file, $to) { global $wp_filesystem; if ( ! $wp_filesystem || !is_object($wp_filesystem) ) return new WP_Error('fs_unavailable', __('Could not access filesystem.')); // Unzip can use a lot of memory, but not this much hopefully @ini_set('memory_limit', '256M'); $needed_dirs = array(); $to = trailingslashit($to); // Determine any parent dir's needed (of the upgrade directory) if ( ! $wp_filesystem->is_dir($to) ) { //Only do parents if no children exist $path = preg_split('![/\\\]!', untrailingslashit($to)); for ( $i = count($path); $i >= 0; $i-- ) { if ( empty($path[$i]) ) continue; $dir = implode('/', array_slice($path, 0, $i+1) ); if ( preg_match('!^[a-z]:$!i', $dir) ) // Skip it if it looks like a Windows Drive letter. continue; if ( ! $wp_filesystem->is_dir($dir) ) $needed_dirs[] = $dir; else break; // A folder exists, therefor, we dont need the check the levels below this } } if ( class_exists('ZipArchive') && apply_filters('unzip_file_use_ziparchive', true ) ) { $result = _unzip_file_ziparchive($file, $to, $needed_dirs); if ( true === $result ) { return $result; } elseif ( is_wp_error($result) ) { if ( 'incompatible_archive' != $result->get_error_code() ) return $result; } } // Fall through to PclZip if ZipArchive is not available, or encountered an error opening the file. return _unzip_file_pclzip($file, $to, $needed_dirs); } /** * This function should not be called directly, use unzip_file instead. Attempts to unzip an archive using the ZipArchive class. * Assumes that WP_Filesystem() has already been called and set up. * * @since 3.0.0 * @see unzip_file * @access private * * @param string $file Full path and filename of zip archive * @param string $to Full path on the filesystem to extract archive to * @param array $needed_dirs A partial list of required folders needed to be created. * @return mixed WP_Error on failure, True on success */ function _unzip_file_ziparchive($file, $to, $needed_dirs = array() ) { global $wp_filesystem; $z = new ZipArchive(); // PHP4-compat - php4 classes can't contain constants $zopen = $z->open($file, /* ZIPARCHIVE::CHECKCONS */ 4); if ( true !== $zopen ) return new WP_Error('incompatible_archive', __('Incompatible Archive.')); for ( $i = 0; $i < $z->numFiles; $i++ ) { if ( ! $info = $z->statIndex($i) ) return new WP_Error('stat_failed', __('Could not retrieve file from archive.')); if ( '__MACOSX/' === substr($info['name'], 0, 9) ) // Skip the OS X-created __MACOSX directory continue; if ( '/' == substr($info['name'], -1) ) // directory $needed_dirs[] = $to . untrailingslashit($info['name']); else $needed_dirs[] = $to . untrailingslashit(dirname($info['name'])); } $needed_dirs = array_unique($needed_dirs); foreach ( $needed_dirs as $dir ) { // Check the parent folders of the folders all exist within the creation array. if ( untrailingslashit($to) == $dir ) // Skip over the working directory, We know this exists (or will exist) continue; if ( strpos($dir, $to) === false ) // If the directory is not within the working directory, Skip it continue; $parent_folder = dirname($dir); while ( !empty($parent_folder) && untrailingslashit($to) != $parent_folder && !in_array($parent_folder, $needed_dirs) ) { $needed_dirs[] = $parent_folder; $parent_folder = dirname($parent_folder); } } asort($needed_dirs); // Create those directories if need be: foreach ( $needed_dirs as $_dir ) { if ( ! $wp_filesystem->mkdir($_dir, FS_CHMOD_DIR) && ! $wp_filesystem->is_dir($_dir) ) // Only check to see if the Dir exists upon creation failure. Less I/O this way. return new WP_Error('mkdir_failed', __('Could not create directory.'), $_dir); } unset($needed_dirs); for ( $i = 0; $i < $z->numFiles; $i++ ) { if ( ! $info = $z->statIndex($i) ) return new WP_Error('stat_failed', __('Could not retrieve file from archive.')); if ( '/' == substr($info['name'], -1) ) // directory continue; if ( '__MACOSX/' === substr($info['name'], 0, 9) ) // Don't extract the OS X-created __MACOSX directory files continue; $contents = $z->getFromIndex($i); if ( false === $contents ) return new WP_Error('extract_failed', __('Could not extract file from archive.'), $info['name']); if ( ! $wp_filesystem->put_contents( $to . $info['name'], $contents, FS_CHMOD_FILE) ) return new WP_Error('copy_failed', __('Could not copy file.'), $to . $info['filename']); } $z->close(); return true; } /** * This function should not be called directly, use unzip_file instead. Attempts to unzip an archive using the PclZip library. * Assumes that WP_Filesystem() has already been called and set up. * * @since 3.0.0 * @see unzip_file * @access private * * @param string $file Full path and filename of zip archive * @param string $to Full path on the filesystem to extract archive to * @param array $needed_dirs A partial list of required folders needed to be created. * @return mixed WP_Error on failure, True on success */ function _unzip_file_pclzip($file, $to, $needed_dirs = array()) { global $wp_filesystem; require_once(ABSPATH . 'wp-admin/includes/class-pclzip.php'); $archive = new PclZip($file); // Is the archive valid? if ( false == ($archive_files = $archive->extract(PCLZIP_OPT_EXTRACT_AS_STRING)) ) return new WP_Error('incompatible_archive', __('Incompatible Archive.'), $archive->errorInfo(true)); if ( 0 == count($archive_files) ) return new WP_Error('empty_archive', __('Empty archive.')); // Determine any children directories needed (From within the archive) foreach ( $archive_files as $file ) { if ( '__MACOSX/' === substr($file['filename'], 0, 9) ) // Skip the OS X-created __MACOSX directory continue; $needed_dirs[] = $to . untrailingslashit( $file['folder'] ? $file['filename'] : dirname($file['filename']) ); } $needed_dirs = array_unique($needed_dirs); foreach ( $needed_dirs as $dir ) { // Check the parent folders of the folders all exist within the creation array. if ( untrailingslashit($to) == $dir ) // Skip over the working directory, We know this exists (or will exist) continue; if ( strpos($dir, $to) === false ) // If the directory is not within the working directory, Skip it continue; $parent_folder = dirname($dir); while ( !empty($parent_folder) && untrailingslashit($to) != $parent_folder && !in_array($parent_folder, $needed_dirs) ) { $needed_dirs[] = $parent_folder; $parent_folder = dirname($parent_folder); } } asort($needed_dirs); // Create those directories if need be: foreach ( $needed_dirs as $_dir ) { if ( ! $wp_filesystem->mkdir($_dir, FS_CHMOD_DIR) && ! $wp_filesystem->is_dir($_dir) ) // Only check to see if the dir exists upon creation failure. Less I/O this way. return new WP_Error('mkdir_failed', __('Could not create directory.'), $_dir); } unset($needed_dirs); // Extract the files from the zip foreach ( $archive_files as $file ) { if ( $file['folder'] ) continue; if ( '__MACOSX/' === substr($file['filename'], 0, 9) ) // Don't extract the OS X-created __MACOSX directory files continue; if ( ! $wp_filesystem->put_contents( $to . $file['filename'], $file['content'], FS_CHMOD_FILE) ) return new WP_Error('copy_failed', __('Could not copy file.'), $to . $file['filename']); } return true; } /** * Copies a directory from one location to another via the WordPress Filesystem Abstraction. * Assumes that WP_Filesystem() has already been called and setup. * * @since 2.5.0 * * @param string $from source directory * @param string $to destination directory * @return mixed WP_Error on failure, True on success. */ function copy_dir($from, $to) { global $wp_filesystem; $dirlist = $wp_filesystem->dirlist($from); $from = trailingslashit($from); $to = trailingslashit($to); foreach ( (array) $dirlist as $filename => $fileinfo ) { if ( 'f' == $fileinfo['type'] ) { if ( ! $wp_filesystem->copy($from . $filename, $to . $filename, true) ) { // If copy failed, chmod file to 0644 and try again. $wp_filesystem->chmod($to . $filename, 0644); if ( ! $wp_filesystem->copy($from . $filename, $to . $filename, true) ) return new WP_Error('copy_failed', __('Could not copy file.'), $to . $filename); } $wp_filesystem->chmod($to . $filename, FS_CHMOD_FILE); } elseif ( 'd' == $fileinfo['type'] ) { if ( !$wp_filesystem->is_dir($to . $filename) ) { if ( !$wp_filesystem->mkdir($to . $filename, FS_CHMOD_DIR) ) return new WP_Error('mkdir_failed', __('Could not create directory.'), $to . $filename); } $result = copy_dir($from . $filename, $to . $filename); if ( is_wp_error($result) ) return $result; } } return true; } /** * Initialises and connects the WordPress Filesystem Abstraction classes. * This function will include the chosen transport and attempt connecting. * * Plugins may add extra transports, And force WordPress to use them by returning the filename via the 'filesystem_method_file' filter. * * @since 2.5.0 * * @param array $args (optional) Connection args, These are passed directly to the WP_Filesystem_*() classes. * @param string $context (optional) Context for get_filesystem_method(), See function declaration for more information. * @return boolean false on failure, true on success */ function WP_Filesystem( $args = false, $context = false ) { global $wp_filesystem; require_once(ABSPATH . 'wp-admin/includes/class-wp-filesystem-base.php'); $method = get_filesystem_method($args, $context); if ( ! $method ) return false; if ( ! class_exists("WP_Filesystem_$method") ) { $abstraction_file = apply_filters('filesystem_method_file', ABSPATH . 'wp-admin/includes/class-wp-filesystem-' . $method . '.php', $method); if ( ! file_exists($abstraction_file) ) return; require_once($abstraction_file); } $method = "WP_Filesystem_$method"; $wp_filesystem = new $method($args); //Define the timeouts for the connections. Only available after the construct is called to allow for per-transport overriding of the default. if ( ! defined('FS_CONNECT_TIMEOUT') ) define('FS_CONNECT_TIMEOUT', 30); if ( ! defined('FS_TIMEOUT') ) define('FS_TIMEOUT', 30); if ( is_wp_error($wp_filesystem->errors) && $wp_filesystem->errors->get_error_code() ) return false; if ( !$wp_filesystem->connect() ) return false; //There was an erorr connecting to the server. // Set the permission constants if not already set. if ( ! defined('FS_CHMOD_DIR') ) define('FS_CHMOD_DIR', 0755 ); if ( ! defined('FS_CHMOD_FILE') ) define('FS_CHMOD_FILE', 0644 ); return true; } /** * Determines which Filesystem Method to use. * The priority of the Transports are: Direct, SSH2, FTP PHP Extension, FTP Sockets (Via Sockets class, or fsoxkopen()) * * Note that the return value of this function can be overridden in 2 ways * - By defining FS_METHOD in your wp-config.php file * - By using the filesystem_method filter * Valid values for these are: 'direct', 'ssh', 'ftpext' or 'ftpsockets' * Plugins may also define a custom transport handler, See the WP_Filesystem function for more information. * * @since 2.5.0 * * @param array $args Connection details. * @param string $context Full path to the directory that is tested for being writable. * @return string The transport to use, see description for valid return values. */ function get_filesystem_method($args = array(), $context = false) { $method = defined('FS_METHOD') ? FS_METHOD : false; //Please ensure that this is either 'direct', 'ssh', 'ftpext' or 'ftpsockets' if ( ! $method && function_exists('getmyuid') && function_exists('fileowner') ){ if ( !$context ) $context = WP_CONTENT_DIR; $context = trailingslashit($context); $temp_file_name = $context . 'temp-write-test-' . time(); $temp_handle = @fopen($temp_file_name, 'w'); if ( $temp_handle ) { if ( getmyuid() == @fileowner($temp_file_name) ) $method = 'direct'; @fclose($temp_handle); @unlink($temp_file_name); } } if ( ! $method && isset($args['connection_type']) && 'ssh' == $args['connection_type'] && extension_loaded('ssh2') && function_exists('stream_get_contents') ) $method = 'ssh2'; if ( ! $method && extension_loaded('ftp') ) $method = 'ftpext'; if ( ! $method && ( extension_loaded('sockets') || function_exists('fsockopen') ) ) $method = 'ftpsockets'; //Sockets: Socket extension; PHP Mode: FSockopen / fwrite / fread return apply_filters('filesystem_method', $method, $args); } /** * Displays a form to the user to request for their FTP/SSH details in order to connect to the filesystem. * All chosen/entered details are saved, Excluding the Password. * * Hostnames may be in the form of hostname:portnumber (eg: wordpress.org:2467) to specify an alternate FTP/SSH port. * * Plugins may override this form by returning true|false via the request_filesystem_credentials filter. * * @since 2.5.0 * * @param string $form_post the URL to post the form to * @param string $type the chosen Filesystem method in use * @param boolean $error if the current request has failed to connect * @param string $context The directory which is needed access to, The write-test will be performed on this directory by get_filesystem_method() * @param string $extra_fields Extra POST fields which should be checked for to be included in the post. * @return boolean False on failure. True on success. */ function request_filesystem_credentials($form_post, $type = '', $error = false, $context = false, $extra_fields = null) { $req_cred = apply_filters( 'request_filesystem_credentials', '', $form_post, $type, $error, $context, $extra_fields ); if ( '' !== $req_cred ) return $req_cred; if ( empty($type) ) $type = get_filesystem_method(array(), $context); if ( 'direct' == $type ) return true; if ( is_null( $extra_fields ) ) $extra_fields = array( 'version', 'locale' ); $credentials = get_option('ftp_credentials', array( 'hostname' => '', 'username' => '')); // If defined, set it to that, Else, If POST'd, set it to that, If not, Set it to whatever it previously was(saved details in option) $credentials['hostname'] = defined('FTP_HOST') ? FTP_HOST : (!empty($_POST['hostname']) ? stripslashes($_POST['hostname']) : $credentials['hostname']); $credentials['username'] = defined('FTP_USER') ? FTP_USER : (!empty($_POST['username']) ? stripslashes($_POST['username']) : $credentials['username']); $credentials['password'] = defined('FTP_PASS') ? FTP_PASS : (!empty($_POST['password']) ? stripslashes($_POST['password']) : ''); // Check to see if we are setting the public/private keys for ssh $credentials['public_key'] = defined('FTP_PUBKEY') ? FTP_PUBKEY : (!empty($_POST['public_key']) ? stripslashes($_POST['public_key']) : ''); $credentials['private_key'] = defined('FTP_PRIKEY') ? FTP_PRIKEY : (!empty($_POST['private_key']) ? stripslashes($_POST['private_key']) : ''); //sanitize the hostname, Some people might pass in odd-data: $credentials['hostname'] = preg_replace('|\w+://|', '', $credentials['hostname']); //Strip any schemes off if ( strpos($credentials['hostname'], ':') ) { list( $credentials['hostname'], $credentials['port'] ) = explode(':', $credentials['hostname'], 2); if ( ! is_numeric($credentials['port']) ) unset($credentials['port']); } else { unset($credentials['port']); } if ( (defined('FTP_SSH') && FTP_SSH) || (defined('FS_METHOD') && 'ssh' == FS_METHOD) ) $credentials['connection_type'] = 'ssh'; else if ( (defined('FTP_SSL') && FTP_SSL) && 'ftpext' == $type ) //Only the FTP Extension understands SSL $credentials['connection_type'] = 'ftps'; else if ( !empty($_POST['connection_type']) ) $credentials['connection_type'] = stripslashes($_POST['connection_type']); else if ( !isset($credentials['connection_type']) ) //All else fails (And its not defaulted to something else saved), Default to FTP $credentials['connection_type'] = 'ftp'; if ( ! $error && ( ( !empty($credentials['password']) && !empty($credentials['username']) && !empty($credentials['hostname']) ) || ( 'ssh' == $credentials['connection_type'] && !empty($credentials['public_key']) && !empty($credentials['private_key']) ) ) ) { $stored_credentials = $credentials; if ( !empty($stored_credentials['port']) ) //save port as part of hostname to simplify above code. $stored_credentials['hostname'] .= ':' . $stored_credentials['port']; unset($stored_credentials['password'], $stored_credentials['port'], $stored_credentials['private_key'], $stored_credentials['public_key']); update_option('ftp_credentials', $stored_credentials); return $credentials; } $hostname = ''; $username = ''; $password = ''; $connection_type = ''; if ( !empty($credentials) ) extract($credentials, EXTR_OVERWRITE); if ( $error ) { $error_string = __('Error: There was an error connecting to the server, Please verify the settings are correct.'); if ( is_wp_error($error) ) $error_string = esc_html( $error->get_error_message() ); echo '

' . $error_string . '

'; } $types = array(); if ( extension_loaded('ftp') || extension_loaded('sockets') || function_exists('fsockopen') ) $types[ 'ftp' ] = __('FTP'); if ( extension_loaded('ftp') ) //Only this supports FTPS $types[ 'ftps' ] = __('FTPS (SSL)'); if ( extension_loaded('ssh2') && function_exists('stream_get_contents') ) $types[ 'ssh' ] = __('SSH2'); $types = apply_filters('fs_ftp_connection_types', $types, $credentials, $type, $error, $context); ?>

" size="40" />
size="40" />
size="40" />


size="40" />
size="40" />
$text ) : ?>
'; } submit_button( __( 'Proceed' ), 'button', 'upgrade' ); ?>
wp-admin/includes/image-edit.php0000644002347300047320000006054711656660352016472 0ustar vonfabpsacln 400 ? 400 / $big : 1; $backup_sizes = get_post_meta( $post_id, '_wp_attachment_backup_sizes', true ); $can_restore = !empty($backup_sizes) && isset($backup_sizes['full-orig']) && $backup_sizes['full-orig']['file'] != basename($meta['file']); if ( $msg ) { if ( isset($msg->error) ) $note = "

$msg->error

"; elseif ( isset($msg->msg) ) $note = "

$msg->msg

"; } ?>
, this)" class="imgedit-crop disabled" title="">
, this)" title="">
, this)" title="">
, this)" class="imgedit-flipv" title="">
, this)" class="imgedit-fliph" title="">
, this)" class="imgedit-undo disabled" title="">
, this)" class="imgedit-redo disabled" title="">

)" disabled="disabled" class="button-primary imgedit-submit-btn" value="" />

× ! , 'scale')" class="button-primary" value="" />

, 'restore')" class="button-primary" value="" />



:

:



400 ? (400 / $max) : 1; } function _rotate_image_resource($img, $angle) { if ( function_exists('imagerotate') ) { $rotated = imagerotate($img, $angle, 0); if ( is_resource($rotated) ) { imagedestroy($img); $img = $rotated; } } return $img; } function _flip_image_resource($img, $horz, $vert) { $w = imagesx($img); $h = imagesy($img); $dst = wp_imagecreatetruecolor($w, $h); if ( is_resource($dst) ) { $sx = $vert ? ($w - 1) : 0; $sy = $horz ? ($h - 1) : 0; $sw = $vert ? -$w : $w; $sh = $horz ? -$h : $h; if ( imagecopyresampled($dst, $img, 0, 0, $sx, $sy, $w, $h, $sw, $sh) ) { imagedestroy($img); $img = $dst; } } return $img; } function _crop_image_resource($img, $x, $y, $w, $h) { $dst = wp_imagecreatetruecolor($w, $h); if ( is_resource($dst) ) { if ( imagecopy($dst, $img, 0, 0, $x, $y, $w, $h) ) { imagedestroy($img); $img = $dst; } } return $img; } function image_edit_apply_changes($img, $changes) { if ( !is_array($changes) ) return $img; // expand change operations foreach ( $changes as $key => $obj ) { if ( isset($obj->r) ) { $obj->type = 'rotate'; $obj->angle = $obj->r; unset($obj->r); } elseif ( isset($obj->f) ) { $obj->type = 'flip'; $obj->axis = $obj->f; unset($obj->f); } elseif ( isset($obj->c) ) { $obj->type = 'crop'; $obj->sel = $obj->c; unset($obj->c); } $changes[$key] = $obj; } // combine operations if ( count($changes) > 1 ) { $filtered = array($changes[0]); for ( $i = 0, $j = 1; $j < count($changes); $j++ ) { $combined = false; if ( $filtered[$i]->type == $changes[$j]->type ) { switch ( $filtered[$i]->type ) { case 'rotate': $filtered[$i]->angle += $changes[$j]->angle; $combined = true; break; case 'flip': $filtered[$i]->axis ^= $changes[$j]->axis; $combined = true; break; } } if ( !$combined ) $filtered[++$i] = $changes[$j]; } $changes = $filtered; unset($filtered); } // image resource before applying the changes $img = apply_filters('image_edit_before_change', $img, $changes); foreach ( $changes as $operation ) { switch ( $operation->type ) { case 'rotate': if ( $operation->angle != 0 ) $img = _rotate_image_resource($img, $operation->angle); break; case 'flip': if ( $operation->axis != 0 ) $img = _flip_image_resource($img, ($operation->axis & 1) != 0, ($operation->axis & 2) != 0); break; case 'crop': $sel = $operation->sel; $scale = 1 / _image_get_preview_ratio( imagesx($img), imagesy($img) ); // discard preview scaling $img = _crop_image_resource($img, $sel->x * $scale, $sel->y * $scale, $sel->w * $scale, $sel->h * $scale); break; } } return $img; } function stream_preview_image($post_id) { $post = get_post($post_id); @ini_set('memory_limit', '256M'); $img = load_image_to_edit( $post_id, $post->post_mime_type, array(400, 400) ); if ( !is_resource($img) ) return false; $changes = !empty($_REQUEST['history']) ? json_decode( stripslashes($_REQUEST['history']) ) : null; if ( $changes ) $img = image_edit_apply_changes($img, $changes); // scale the image $w = imagesx($img); $h = imagesy($img); $ratio = _image_get_preview_ratio($w, $h); $w2 = $w * $ratio; $h2 = $h * $ratio; $preview = wp_imagecreatetruecolor($w2, $h2); imagecopyresampled( $preview, $img, 0, 0, 0, 0, $w2, $h2, $w, $h ); wp_stream_image($preview, $post->post_mime_type, $post_id); imagedestroy($preview); imagedestroy($img); return true; } function wp_restore_image($post_id) { $meta = wp_get_attachment_metadata($post_id); $file = get_attached_file($post_id); $backup_sizes = get_post_meta( $post_id, '_wp_attachment_backup_sizes', true ); $restored = false; $msg = new stdClass; if ( !is_array($backup_sizes) ) { $msg->error = __('Cannot load image metadata.'); return $msg; } $parts = pathinfo($file); $suffix = time() . rand(100, 999); $default_sizes = apply_filters( 'intermediate_image_sizes', array('large', 'medium', 'thumbnail') ); if ( isset($backup_sizes['full-orig']) && is_array($backup_sizes['full-orig']) ) { $data = $backup_sizes['full-orig']; if ( $parts['basename'] != $data['file'] ) { if ( defined('IMAGE_EDIT_OVERWRITE') && IMAGE_EDIT_OVERWRITE ) { // delete only if it's edited image if ( preg_match('/-e[0-9]{13}\./', $parts['basename']) ) { $delpath = apply_filters('wp_delete_file', $file); @unlink($delpath); } } else { $backup_sizes["full-$suffix"] = array('width' => $meta['width'], 'height' => $meta['height'], 'file' => $parts['basename']); } } $restored_file = path_join($parts['dirname'], $data['file']); $restored = update_attached_file($post_id, $restored_file); $meta['file'] = _wp_relative_upload_path( $restored_file ); $meta['width'] = $data['width']; $meta['height'] = $data['height']; list ( $uwidth, $uheight ) = wp_constrain_dimensions($meta['width'], $meta['height'], 128, 96); $meta['hwstring_small'] = "height='$uheight' width='$uwidth'"; } foreach ( $default_sizes as $default_size ) { if ( isset($backup_sizes["$default_size-orig"]) ) { $data = $backup_sizes["$default_size-orig"]; if ( isset($meta['sizes'][$default_size]) && $meta['sizes'][$default_size]['file'] != $data['file'] ) { if ( defined('IMAGE_EDIT_OVERWRITE') && IMAGE_EDIT_OVERWRITE ) { // delete only if it's edited image if ( preg_match('/-e[0-9]{13}-/', $meta['sizes'][$default_size]['file']) ) { $delpath = apply_filters( 'wp_delete_file', path_join($parts['dirname'], $meta['sizes'][$default_size]['file']) ); @unlink($delpath); } } else { $backup_sizes["$default_size-{$suffix}"] = $meta['sizes'][$default_size]; } } $meta['sizes'][$default_size] = $data; } else { unset($meta['sizes'][$default_size]); } } if ( !wp_update_attachment_metadata($post_id, $meta) || !update_post_meta( $post_id, '_wp_attachment_backup_sizes', $backup_sizes) ) { $msg->error = __('Cannot save image metadata.'); return $msg; } if ( !$restored ) $msg->error = __('Image metadata is inconsistent.'); else $msg->msg = __('Image restored successfully.'); return $msg; } function wp_save_image($post_id) { $return = new stdClass; $success = $delete = $scaled = $nocrop = false; $post = get_post($post_id); @ini_set('memory_limit', '256M'); $img = load_image_to_edit($post_id, $post->post_mime_type); if ( !is_resource($img) ) { $return->error = esc_js( __('Unable to create new image.') ); return $return; } $fwidth = !empty($_REQUEST['fwidth']) ? intval($_REQUEST['fwidth']) : 0; $fheight = !empty($_REQUEST['fheight']) ? intval($_REQUEST['fheight']) : 0; $target = !empty($_REQUEST['target']) ? preg_replace('/[^a-z0-9_-]+/i', '', $_REQUEST['target']) : ''; $scale = !empty($_REQUEST['do']) && 'scale' == $_REQUEST['do']; if ( $scale && $fwidth > 0 && $fheight > 0 ) { $sX = imagesx($img); $sY = imagesy($img); // check if it has roughly the same w / h ratio $diff = round($sX / $sY, 2) - round($fwidth / $fheight, 2); if ( -0.1 < $diff && $diff < 0.1 ) { // scale the full size image $dst = wp_imagecreatetruecolor($fwidth, $fheight); if ( imagecopyresampled( $dst, $img, 0, 0, 0, 0, $fwidth, $fheight, $sX, $sY ) ) { imagedestroy($img); $img = $dst; $scaled = true; } } if ( !$scaled ) { $return->error = esc_js( __('Error while saving the scaled image. Please reload the page and try again.') ); return $return; } } elseif ( !empty($_REQUEST['history']) ) { $changes = json_decode( stripslashes($_REQUEST['history']) ); if ( $changes ) $img = image_edit_apply_changes($img, $changes); } else { $return->error = esc_js( __('Nothing to save, the image has not changed.') ); return $return; } $meta = wp_get_attachment_metadata($post_id); $backup_sizes = get_post_meta( $post->ID, '_wp_attachment_backup_sizes', true ); if ( !is_array($meta) ) { $return->error = esc_js( __('Image data does not exist. Please re-upload the image.') ); return $return; } if ( !is_array($backup_sizes) ) $backup_sizes = array(); // generate new filename $path = get_attached_file($post_id); $path_parts = pathinfo52( $path ); $filename = $path_parts['filename']; $suffix = time() . rand(100, 999); if ( defined('IMAGE_EDIT_OVERWRITE') && IMAGE_EDIT_OVERWRITE && isset($backup_sizes['full-orig']) && $backup_sizes['full-orig']['file'] != $path_parts['basename'] ) { if ( 'thumbnail' == $target ) $new_path = "{$path_parts['dirname']}/{$filename}-temp.{$path_parts['extension']}"; else $new_path = $path; } else { while( true ) { $filename = preg_replace( '/-e([0-9]+)$/', '', $filename ); $filename .= "-e{$suffix}"; $new_filename = "{$filename}.{$path_parts['extension']}"; $new_path = "{$path_parts['dirname']}/$new_filename"; if ( file_exists($new_path) ) $suffix++; else break; } } // save the full-size file, also needed to create sub-sizes if ( !wp_save_image_file($new_path, $img, $post->post_mime_type, $post_id) ) { $return->error = esc_js( __('Unable to save the image.') ); return $return; } if ( 'nothumb' == $target || 'all' == $target || 'full' == $target || $scaled ) { $tag = false; if ( isset($backup_sizes['full-orig']) ) { if ( ( !defined('IMAGE_EDIT_OVERWRITE') || !IMAGE_EDIT_OVERWRITE ) && $backup_sizes['full-orig']['file'] != $path_parts['basename'] ) $tag = "full-$suffix"; } else { $tag = 'full-orig'; } if ( $tag ) $backup_sizes[$tag] = array('width' => $meta['width'], 'height' => $meta['height'], 'file' => $path_parts['basename']); $success = update_attached_file($post_id, $new_path); $meta['file'] = _wp_relative_upload_path($new_path); $meta['width'] = imagesx($img); $meta['height'] = imagesy($img); list ( $uwidth, $uheight ) = wp_constrain_dimensions($meta['width'], $meta['height'], 128, 96); $meta['hwstring_small'] = "height='$uheight' width='$uwidth'"; if ( $success && ('nothumb' == $target || 'all' == $target) ) { $sizes = apply_filters( 'intermediate_image_sizes', array('large', 'medium', 'thumbnail') ); if ( 'nothumb' == $target ) $sizes = array_diff( $sizes, array('thumbnail') ); } $return->fw = $meta['width']; $return->fh = $meta['height']; } elseif ( 'thumbnail' == $target ) { $sizes = array( 'thumbnail' ); $success = $delete = $nocrop = true; } if ( isset($sizes) ) { foreach ( $sizes as $size ) { $tag = false; if ( isset($meta['sizes'][$size]) ) { if ( isset($backup_sizes["$size-orig"]) ) { if ( ( !defined('IMAGE_EDIT_OVERWRITE') || !IMAGE_EDIT_OVERWRITE ) && $backup_sizes["$size-orig"]['file'] != $meta['sizes'][$size]['file'] ) $tag = "$size-$suffix"; } else { $tag = "$size-orig"; } if ( $tag ) $backup_sizes[$tag] = $meta['sizes'][$size]; } $crop = $nocrop ? false : get_option("{$size}_crop"); $resized = image_make_intermediate_size($new_path, get_option("{$size}_size_w"), get_option("{$size}_size_h"), $crop ); if ( $resized ) $meta['sizes'][$size] = $resized; else unset($meta['sizes'][$size]); } } if ( $success ) { wp_update_attachment_metadata($post_id, $meta); update_post_meta( $post_id, '_wp_attachment_backup_sizes', $backup_sizes); if ( $target == 'thumbnail' || $target == 'all' || $target == 'full' ) { $file_url = wp_get_attachment_url($post_id); if ( $thumb = $meta['sizes']['thumbnail'] ) $return->thumbnail = path_join( dirname($file_url), $thumb['file'] ); else $return->thumbnail = "$file_url?w=128&h=128"; } } else { $delete = true; } if ( $delete ) { $delpath = apply_filters('wp_delete_file', $new_path); @unlink($delpath); } imagedestroy($img); $return->msg = esc_js( __('Image saved') ); return $return; } wp-admin/includes/image.php0000644002347300047320000002730111656660352015536 0ustar vonfabpsacln '', 'height' => '', 'crop' => FALSE ); if ( isset( $_wp_additional_image_sizes[$s]['width'] ) ) $sizes[$s]['width'] = intval( $_wp_additional_image_sizes[$s]['width'] ); // For theme-added sizes else $sizes[$s]['width'] = get_option( "{$s}_size_w" ); // For default sizes set in options if ( isset( $_wp_additional_image_sizes[$s]['height'] ) ) $sizes[$s]['height'] = intval( $_wp_additional_image_sizes[$s]['height'] ); // For theme-added sizes else $sizes[$s]['height'] = get_option( "{$s}_size_h" ); // For default sizes set in options if ( isset( $_wp_additional_image_sizes[$s]['crop'] ) ) $sizes[$s]['crop'] = intval( $_wp_additional_image_sizes[$s]['crop'] ); // For theme-added sizes else $sizes[$s]['crop'] = get_option( "{$s}_crop" ); // For default sizes set in options } $sizes = apply_filters( 'intermediate_image_sizes_advanced', $sizes ); foreach ($sizes as $size => $size_data ) { $resized = image_make_intermediate_size( $file, $size_data['width'], $size_data['height'], $size_data['crop'] ); if ( $resized ) $metadata['sizes'][$size] = $resized; } // fetch additional metadata from exif/iptc $image_meta = wp_read_image_metadata( $file ); if ( $image_meta ) $metadata['image_meta'] = $image_meta; } return apply_filters( 'wp_generate_attachment_metadata', $metadata, $attachment_id ); } /** * Calculated the new dimentions for a downsampled image. * * @since 2.0.0 * @see wp_constrain_dimensions() * * @param int $width Current width of the image * @param int $height Current height of the image * @return mixed Array(height,width) of shrunk dimensions. */ function get_udims( $width, $height) { return wp_constrain_dimensions( $width, $height, 128, 96 ); } /** * Convert a fraction string to a decimal. * * @since 2.5.0 * * @param string $str * @return int|float */ function wp_exif_frac2dec($str) { @list( $n, $d ) = explode( '/', $str ); if ( !empty($d) ) return $n / $d; return $str; } /** * Convert the exif date format to a unix timestamp. * * @since 2.5.0 * * @param string $str * @return int */ function wp_exif_date2ts($str) { @list( $date, $time ) = explode( ' ', trim($str) ); @list( $y, $m, $d ) = explode( ':', $date ); return strtotime( "{$y}-{$m}-{$d} {$time}" ); } /** * Get extended image metadata, exif or iptc as available. * * Retrieves the EXIF metadata aperture, credit, camera, caption, copyright, iso * created_timestamp, focal_length, shutter_speed, and title. * * The IPTC metadata that is retrieved is APP13, credit, byline, created date * and time, caption, copyright, and title. Also includes FNumber, Model, * DateTimeDigitized, FocalLength, ISOSpeedRatings, and ExposureTime. * * @todo Try other exif libraries if available. * @since 2.5.0 * * @param string $file * @return bool|array False on failure. Image metadata array on success. */ function wp_read_image_metadata( $file ) { if ( ! file_exists( $file ) ) return false; list( , , $sourceImageType ) = getimagesize( $file ); // exif contains a bunch of data we'll probably never need formatted in ways // that are difficult to use. We'll normalize it and just extract the fields // that are likely to be useful. Fractions and numbers are converted to // floats, dates to unix timestamps, and everything else to strings. $meta = array( 'aperture' => 0, 'credit' => '', 'camera' => '', 'caption' => '', 'created_timestamp' => 0, 'copyright' => '', 'focal_length' => 0, 'iso' => 0, 'shutter_speed' => 0, 'title' => '', ); // read iptc first, since it might contain data not available in exif such // as caption, description etc if ( is_callable( 'iptcparse' ) ) { getimagesize( $file, $info ); if ( ! empty( $info['APP13'] ) ) { $iptc = iptcparse( $info['APP13'] ); // headline, "A brief synopsis of the caption." if ( ! empty( $iptc['2#105'][0] ) ) $meta['title'] = utf8_encode( trim( $iptc['2#105'][0] ) ); // title, "Many use the Title field to store the filename of the image, though the field may be used in many ways." elseif ( ! empty( $iptc['2#005'][0] ) ) $meta['title'] = utf8_encode( trim( $iptc['2#005'][0] ) ); if ( ! empty( $iptc['2#120'][0] ) ) { // description / legacy caption $caption = utf8_encode( trim( $iptc['2#120'][0] ) ); if ( empty( $meta['title'] ) ) { // Assume the title is stored in 2:120 if it's short. if ( strlen( $caption ) < 80 ) $meta['title'] = $caption; else $meta['caption'] = $caption; } elseif ( $caption != $meta['title'] ) { $meta['caption'] = $caption; } } if ( ! empty( $iptc['2#110'][0] ) ) // credit $meta['credit'] = utf8_encode(trim($iptc['2#110'][0])); elseif ( ! empty( $iptc['2#080'][0] ) ) // creator / legacy byline $meta['credit'] = utf8_encode(trim($iptc['2#080'][0])); if ( ! empty( $iptc['2#055'][0] ) and ! empty( $iptc['2#060'][0] ) ) // created date and time $meta['created_timestamp'] = strtotime( $iptc['2#055'][0] . ' ' . $iptc['2#060'][0] ); if ( ! empty( $iptc['2#116'][0] ) ) // copyright $meta['copyright'] = utf8_encode( trim( $iptc['2#116'][0] ) ); } } // fetch additional info from exif if available if ( is_callable( 'exif_read_data' ) && in_array( $sourceImageType, apply_filters( 'wp_read_image_metadata_types', array( IMAGETYPE_JPEG, IMAGETYPE_TIFF_II, IMAGETYPE_TIFF_MM ) ) ) ) { $exif = @exif_read_data( $file ); if ( !empty( $exif['Title'] ) ) $meta['title'] = utf8_encode( trim( $exif['Title'] ) ); if ( ! empty( $exif['ImageDescription'] ) ) { if ( empty( $meta['title'] ) && strlen( $exif['ImageDescription'] ) < 80 ) { // Assume the title is stored in ImageDescription $meta['title'] = utf8_encode( trim( $exif['ImageDescription'] ) ); if ( ! empty( $exif['COMPUTED']['UserComment'] ) && trim( $exif['COMPUTED']['UserComment'] ) != $meta['title'] ) $meta['caption'] = utf8_encode( trim( $exif['COMPUTED']['UserComment'] ) ); } elseif ( trim( $exif['ImageDescription'] ) != $meta['title'] ) { $meta['caption'] = utf8_encode( trim( $exif['ImageDescription'] ) ); } } elseif ( ! empty( $exif['Comments'] ) && trim( $exif['Comments'] ) != $meta['title'] ) { $meta['caption'] = utf8_encode( trim( $exif['Comments'] ) ); } if ( ! empty( $exif['Artist'] ) ) $meta['credit'] = utf8_encode( trim( $exif['Artist'] ) ); elseif ( ! empty($exif['Author'] ) ) $meta['credit'] = utf8_encode( trim( $exif['Author'] ) ); if ( ! empty( $exif['Copyright'] ) ) $meta['copyright'] = utf8_encode( trim( $exif['Copyright'] ) ); if ( ! empty($exif['FNumber'] ) ) $meta['aperture'] = round( wp_exif_frac2dec( $exif['FNumber'] ), 2 ); if ( ! empty($exif['Model'] ) ) $meta['camera'] = utf8_encode( trim( $exif['Model'] ) ); if ( ! empty($exif['DateTimeDigitized'] ) ) $meta['created_timestamp'] = wp_exif_date2ts($exif['DateTimeDigitized'] ); if ( ! empty($exif['FocalLength'] ) ) $meta['focal_length'] = wp_exif_frac2dec( $exif['FocalLength'] ); if ( ! empty($exif['ISOSpeedRatings'] ) ) $meta['iso'] = utf8_encode( trim( $exif['ISOSpeedRatings'] ) ); if ( ! empty($exif['ExposureTime'] ) ) $meta['shutter_speed'] = wp_exif_frac2dec( $exif['ExposureTime'] ); } return apply_filters( 'wp_read_image_metadata', $meta, $file, $sourceImageType ); } /** * Validate that file is an image. * * @since 2.5.0 * * @param string $path File path to test if valid image. * @return bool True if valid image, false if not valid image. */ function file_is_valid_image($path) { $size = @getimagesize($path); return !empty($size); } /** * Validate that file is suitable for displaying within a web page. * * @since 2.5.0 * @uses apply_filters() Calls 'file_is_displayable_image' on $result and $path. * * @param string $path File path to test. * @return bool True if suitable, false if not suitable. */ function file_is_displayable_image($path) { $info = @getimagesize($path); if ( empty($info) ) $result = false; elseif ( !in_array($info[2], array(IMAGETYPE_GIF, IMAGETYPE_JPEG, IMAGETYPE_PNG)) ) // only gif, jpeg and png images can reliably be displayed $result = false; else $result = true; return apply_filters('file_is_displayable_image', $result, $path); } wp-admin/includes/import.php0000644002347300047320000000464011656660352015767 0ustar vonfabpsacln false, 'test_type' => false ); $_FILES['import']['name'] .= '.txt'; $file = wp_handle_upload( $_FILES['import'], $overrides ); if ( isset( $file['error'] ) ) return $file; $url = $file['url']; $type = $file['type']; $file = $file['file']; $filename = basename( $file ); // Construct the object array $object = array( 'post_title' => $filename, 'post_content' => $url, 'post_mime_type' => $type, 'guid' => $url, 'context' => 'import', 'post_status' => 'private' ); // Save the data $id = wp_insert_attachment( $object, $file ); // schedule a cleanup for one day from now in case of failed import or missing wp_import_cleanup() call wp_schedule_single_event( time() + 86400, 'importer_scheduled_cleanup', array( $id ) ); return array( 'file' => $file, 'id' => $id ); } ?> wp-admin/includes/internal-linking.php0000644002347300047320000000753411656660353017730 0ustar vonfabpsacln true ), 'objects' ); $pt_names = array_keys( $pts ); $query = array( 'post_type' => $pt_names, 'suppress_filters' => true, 'update_post_term_cache' => false, 'update_post_meta_cache' => false, 'post_status' => 'publish', 'order' => 'DESC', 'orderby' => 'post_date', 'posts_per_page' => 20, ); $args['pagenum'] = isset( $args['pagenum'] ) ? absint( $args['pagenum'] ) : 1; if ( isset( $args['s'] ) ) $query['s'] = $args['s']; $query['offset'] = $args['pagenum'] > 1 ? $query['posts_per_page'] * ( $args['pagenum'] - 1 ) : 0; // Do main query. $get_posts = new WP_Query; $posts = $get_posts->query( $query ); // Check if any posts were found. if ( ! $get_posts->post_count ) return false; // Build results. $results = array(); foreach ( $posts as $post ) { if ( 'post' == $post->post_type ) $info = mysql2date( __( 'Y/m/d' ), $post->post_date ); else $info = $pts[ $post->post_type ]->labels->singular_name; $results[] = array( 'ID' => $post->ID, 'title' => trim( esc_html( strip_tags( get_the_title( $post ) ) ) ), 'permalink' => get_permalink( $post->ID ), 'info' => $info, ); } return $results; } /** * Dialog for internal linking. * * @since 3.1.0 */ function wp_link_dialog() { ?> wp-admin/includes/list-table.php0000644002347300047320000000536611656660352016523 0ustar vonfabpsacln 'posts', 'WP_Media_List_Table' => 'media', 'WP_Terms_List_Table' => 'terms', 'WP_Users_List_Table' => 'users', 'WP_Comments_List_Table' => 'comments', 'WP_Post_Comments_List_Table' => 'comments', 'WP_Links_List_Table' => 'links', 'WP_Plugin_Install_List_Table' => 'plugin-install', 'WP_Themes_List_Table' => 'themes', 'WP_Theme_Install_List_Table' => 'theme-install', 'WP_Plugins_List_Table' => 'plugins', // Network Admin 'WP_MS_Sites_List_Table' => 'ms-sites', 'WP_MS_Users_List_Table' => 'ms-users', 'WP_MS_Themes_List_Table' => 'ms-themes', ); if ( isset( $core_classes[ $class ] ) ) { require_once( ABSPATH . 'wp-admin/includes/class-wp-' . $core_classes[ $class ] . '-list-table.php' ); return new $class; } return false; } /** * Register column headers for a particular screen. * * @since 2.7.0 * * @param string $screen The handle for the screen to add help to. This is usually the hook name returned by the add_*_page() functions. * @param array $columns An array of columns with column IDs as the keys and translated column names as the values * @see get_column_headers(), print_column_headers(), get_hidden_columns() */ function register_column_headers($screen, $columns) { $wp_list_table = new _WP_List_Table_Compat($screen, $columns); } /** * Prints column headers for a particular screen. * * @since 2.7.0 */ function print_column_headers($screen, $id = true) { $wp_list_table = new _WP_List_Table_Compat($screen); $wp_list_table->print_column_headers($id); } /** * Helper class to be used only by back compat functions * * @since 3.1.0 */ class _WP_List_Table_Compat extends WP_List_Table { var $_screen; var $_columns; function _WP_List_Table_Compat( $screen, $columns = array() ) { if ( is_string( $screen ) ) $screen = convert_to_screen( $screen ); $this->_screen = $screen; if ( !empty( $columns ) ) { $this->_columns = $columns; add_filter( 'manage_' . $screen->id . '_columns', array( &$this, 'get_columns' ), 0 ); } } function get_column_info() { $columns = get_column_headers( $this->_screen ); $hidden = get_hidden_columns( $this->_screen ); $sortable = array(); return array( $columns, $hidden, $sortable ); } function get_columns() { return $this->_columns; } } ?>wp-admin/includes/manifest.php0000644002347300047320000002432611656660353016267 0ustar vonfabpsacln __('From Computer'), // handler action suffix => tab text 'type_url' => __('From URL'), 'gallery' => __('Gallery'), 'library' => __('Media Library') ); return apply_filters('media_upload_tabs', $_default_tabs); } /** * {@internal Missing Short Description}} * * @since 2.5.0 * * @param unknown_type $tabs * @return unknown */ function update_gallery_tab($tabs) { global $wpdb; if ( !isset($_REQUEST['post_id']) ) { unset($tabs['gallery']); return $tabs; } $post_id = intval($_REQUEST['post_id']); if ( $post_id ) $attachments = intval( $wpdb->get_var( $wpdb->prepare( "SELECT count(*) FROM $wpdb->posts WHERE post_type = 'attachment' AND post_status != 'trash' AND post_parent = %d", $post_id ) ) ); if ( empty($attachments) ) { unset($tabs['gallery']); return $tabs; } $tabs['gallery'] = sprintf(__('Gallery (%s)'), "$attachments"); return $tabs; } add_filter('media_upload_tabs', 'update_gallery_tab'); /** * {@internal Missing Short Description}} * * @since 2.5.0 */ function the_media_upload_tabs() { global $redir_tab; $tabs = media_upload_tabs(); if ( !empty($tabs) ) { echo "
    \n"; if ( isset($redir_tab) && array_key_exists($redir_tab, $tabs) ) $current = $redir_tab; elseif ( isset($_GET['tab']) && array_key_exists($_GET['tab'], $tabs) ) $current = $_GET['tab']; else $current = apply_filters('media_upload_default_tab', 'type'); foreach ( $tabs as $callback => $text ) { $class = ''; if ( $current == $callback ) $class = " class='current'"; $href = add_query_arg(array('tab'=>$callback, 's'=>false, 'paged'=>false, 'post_mime_type'=>false, 'm'=>false)); $link = "$text"; echo "\t
  • $link
  • \n"; } echo "
\n"; } } /** * {@internal Missing Short Description}} * * @since 2.5.0 * * @param unknown_type $id * @param unknown_type $alt * @param unknown_type $title * @param unknown_type $align * @param unknown_type $url * @param unknown_type $rel * @param unknown_type $size * @return unknown */ function get_image_send_to_editor($id, $caption, $title, $align, $url='', $rel = false, $size='medium', $alt = '') { $html = get_image_tag($id, $alt, $title, $align, $size); $rel = $rel ? ' rel="attachment wp-att-' . esc_attr($id).'"' : ''; if ( $url ) $html = '$html"; $html = apply_filters( 'image_send_to_editor', $html, $id, $caption, $title, $align, $url, $size, $alt ); return $html; } /** * {@internal Missing Short Description}} * * @since 2.6.0 * * @param unknown_type $html * @param unknown_type $id * @param unknown_type $alt * @param unknown_type $title * @param unknown_type $align * @param unknown_type $url * @param unknown_type $size * @return unknown */ function image_add_caption( $html, $id, $caption, $title, $align, $url, $size, $alt = '' ) { if ( empty($caption) || apply_filters( 'disable_captions', '' ) ) return $html; $id = ( 0 < (int) $id ) ? 'attachment_' . $id : ''; if ( ! preg_match( '/width="([0-9]+)/', $html, $matches ) ) return $html; $width = $matches[1]; $caption = str_replace( array( '>', '<', '"', "'" ), array( '>', '<', '"', ''' ), $caption ); $html = preg_replace( '/(class=["\'][^\'"]*)align(none|left|right|center)\s?/', '$1', $html ); if ( empty($align) ) $align = 'none'; $shcode = '[caption id="' . $id . '" align="align' . $align . '" width="' . $width . '" caption="' . addslashes($caption) . '"]' . $html . '[/caption]'; return apply_filters( 'image_add_caption_shortcode', $shcode, $html ); } add_filter( 'image_send_to_editor', 'image_add_caption', 20, 8 ); /** * {@internal Missing Short Description}} * * @since 2.5.0 * * @param unknown_type $html */ function media_send_to_editor($html) { ?> false )) { $time = current_time('mysql'); if ( $post = get_post($post_id) ) { if ( substr( $post->post_date, 0, 4 ) > 0 ) $time = $post->post_date; } $name = $_FILES[$file_id]['name']; $file = wp_handle_upload($_FILES[$file_id], $overrides, $time); if ( isset($file['error']) ) return new WP_Error( 'upload_error', $file['error'] ); $name_parts = pathinfo($name); $name = trim( substr( $name, 0, -(1 + strlen($name_parts['extension'])) ) ); $url = $file['url']; $type = $file['type']; $file = $file['file']; $title = $name; $content = ''; // use image exif/iptc data for title and caption defaults if possible if ( $image_meta = @wp_read_image_metadata($file) ) { if ( trim( $image_meta['title'] ) && ! is_numeric( sanitize_title( $image_meta['title'] ) ) ) $title = $image_meta['title']; if ( trim( $image_meta['caption'] ) ) $content = $image_meta['caption']; } // Construct the attachment array $attachment = array_merge( array( 'post_mime_type' => $type, 'guid' => $url, 'post_parent' => $post_id, 'post_title' => $title, 'post_content' => $content, ), $post_data ); // Save the data $id = wp_insert_attachment($attachment, $file, $post_id); if ( !is_wp_error($id) ) { wp_update_attachment_metadata( $id, wp_generate_attachment_metadata( $id, $file ) ); } return $id; } /** * This handles a sideloaded file in the same way as an uploaded file is handled by {@link media_handle_upload()} * * @since 2.6.0 * * @param array $file_array Array similar to a {@link $_FILES} upload array * @param int $post_id The post ID the media is associated with * @param string $desc Description of the sideloaded file * @param array $post_data allows you to overwrite some of the attachment * @return int|object The ID of the attachment or a WP_Error on failure */ function media_handle_sideload($file_array, $post_id, $desc = null, $post_data = array()) { $overrides = array('test_form'=>false); $file = wp_handle_sideload($file_array, $overrides); if ( isset($file['error']) ) return new WP_Error( 'upload_error', $file['error'] ); $url = $file['url']; $type = $file['type']; $file = $file['file']; $title = preg_replace('/\.[^.]+$/', '', basename($file)); $content = ''; // use image exif/iptc data for title and caption defaults if possible if ( $image_meta = @wp_read_image_metadata($file) ) { if ( trim( $image_meta['title'] ) && ! is_numeric( sanitize_title( $image_meta['title'] ) ) ) $title = $image_meta['title']; if ( trim( $image_meta['caption'] ) ) $content = $image_meta['caption']; } $title = isset($desc) ? $desc : ''; // Construct the attachment array $attachment = array_merge( array( 'post_mime_type' => $type, 'guid' => $url, 'post_parent' => $post_id, 'post_title' => $title, 'post_content' => $content, ), $post_data ); // Save the attachment metadata $id = wp_insert_attachment($attachment, $file, $post_id); if ( !is_wp_error($id) ) wp_update_attachment_metadata( $id, wp_generate_attachment_metadata( $id, $file ) ); return $id; } /** * {@internal Missing Short Description}} * * Wrap iframe content (produced by $content_func) in a doctype, html head/body * etc any additional function args will be passed to content_func. * * @since 2.5.0 * * @param unknown_type $content_func */ function wp_iframe($content_func /* ... */) { ?> > <?php bloginfo('name') ?> › <?php _e('Uploads'); ?> — <?php _e('WordPress'); ?> > $title"; } function get_upload_iframe_src($type) { global $post_ID, $temp_ID; $uploading_iframe_ID = (int) (0 == $post_ID ? $temp_ID : $post_ID); $upload_iframe_src = add_query_arg('post_id', $uploading_iframe_ID, 'media-upload.php'); if ( 'media' != $type ) $upload_iframe_src = add_query_arg('type', $type, $upload_iframe_src); $upload_iframe_src = apply_filters($type . '_upload_iframe_src', $upload_iframe_src); return add_query_arg('TB_iframe', true, $upload_iframe_src); } /** * {@internal Missing Short Description}} * * @since 2.5.0 * * @return unknown */ function media_upload_form_handler() { check_admin_referer('media-form'); $errors = null; if ( isset($_POST['send']) ) { $keys = array_keys($_POST['send']); $send_id = (int) array_shift($keys); } if ( !empty($_POST['attachments']) ) foreach ( $_POST['attachments'] as $attachment_id => $attachment ) { $post = $_post = get_post($attachment_id, ARRAY_A); if ( isset($attachment['post_content']) ) $post['post_content'] = $attachment['post_content']; if ( isset($attachment['post_title']) ) $post['post_title'] = $attachment['post_title']; if ( isset($attachment['post_excerpt']) ) $post['post_excerpt'] = $attachment['post_excerpt']; if ( isset($attachment['menu_order']) ) $post['menu_order'] = $attachment['menu_order']; if ( isset($send_id) && $attachment_id == $send_id ) { if ( isset($attachment['post_parent']) ) $post['post_parent'] = $attachment['post_parent']; } $post = apply_filters('attachment_fields_to_save', $post, $attachment); if ( isset($attachment['image_alt']) ) { $image_alt = get_post_meta($attachment_id, '_wp_attachment_image_alt', true); if ( $image_alt != stripslashes($attachment['image_alt']) ) { $image_alt = wp_strip_all_tags( stripslashes($attachment['image_alt']), true ); // update_meta expects slashed update_post_meta( $attachment_id, '_wp_attachment_image_alt', addslashes($image_alt) ); } } if ( isset($post['errors']) ) { $errors[$attachment_id] = $post['errors']; unset($post['errors']); } if ( $post != $_post ) wp_update_post($post); foreach ( get_attachment_taxonomies($post) as $t ) { if ( isset($attachment[$t]) ) wp_set_object_terms($attachment_id, array_map('trim', preg_split('/,+/', $attachment[$t])), $t, false); } } if ( isset($_POST['insert-gallery']) || isset($_POST['update-gallery']) ) { ?> $html"; } $html = apply_filters('media_send_to_editor', $html, $send_id, $attachment); return media_send_to_editor($html); } return $errors; } /** * {@internal Missing Short Description}} * * @since 2.5.0 * * @return unknown */ function media_upload_image() { $errors = array(); $id = 0; if ( isset($_POST['html-upload']) && !empty($_FILES) ) { check_admin_referer('media-form'); // Upload File button was clicked $id = media_handle_upload('async-upload', $_REQUEST['post_id']); unset($_FILES); if ( is_wp_error($id) ) { $errors['upload_error'] = $id; $id = false; } } if ( !empty($_POST['insertonlybutton']) ) { $alt = $align = ''; $src = $_POST['insertonly']['src']; if ( !empty($src) && !strpos($src, '://') ) $src = "http://$src"; $alt = esc_attr($_POST['insertonly']['alt']); if ( isset($_POST['insertonly']['align']) ) { $align = esc_attr($_POST['insertonly']['align']); $class = " class='align$align'"; } if ( !empty($src) ) $html = "$alt"; $html = apply_filters('image_send_to_editor_url', $html, esc_url_raw($src), $alt, $align); return media_send_to_editor($html); } if ( !empty($_POST) ) { $return = media_upload_form_handler(); if ( is_string($return) ) return $return; if ( is_array($return) ) $errors = $return; } if ( isset($_POST['save']) ) { $errors['upload_notice'] = __('Saved.'); return media_upload_gallery(); } if ( isset($_GET['tab']) && $_GET['tab'] == 'type_url' ) return wp_iframe( 'media_upload_type_url_form', 'image', $errors, $id ); return wp_iframe( 'media_upload_type_form', 'image', $errors, $id ); } /** * Download an image from the specified URL and attach it to a post. * * @since 2.6.0 * * @param string $file The URL of the image to download * @param int $post_id The post ID the media is to be associated with * @param string $desc Optional. Description of the image * @return string|WP_Error Populated HTML img tag on success */ function media_sideload_image($file, $post_id, $desc = null) { if ( ! empty($file) ) { // Download file to temp location $tmp = download_url( $file ); // Set variables for storage // fix file filename for query strings preg_match('/[^\?]+\.(jpg|JPG|jpe|JPE|jpeg|JPEG|gif|GIF|png|PNG)/', $file, $matches); $file_array['name'] = basename($matches[0]); $file_array['tmp_name'] = $tmp; // If error storing temporarily, unlink if ( is_wp_error( $tmp ) ) { @unlink($file_array['tmp_name']); $file_array['tmp_name'] = ''; } // do the validation and storage stuff $id = media_handle_sideload( $file_array, $post_id, $desc ); // If error storing permanently, unlink if ( is_wp_error($id) ) { @unlink($file_array['tmp_name']); return $id; } $src = wp_get_attachment_url( $id ); } // Finally check to make sure the file has been saved, then return the html if ( ! empty($src) ) { $alt = isset($desc) ? esc_attr($desc) : ''; $html = "$alt"; return $html; } } /** * {@internal Missing Short Description}} * * @since 2.5.0 * * @return unknown */ function media_upload_audio() { $errors = array(); $id = 0; if ( isset($_POST['html-upload']) && !empty($_FILES) ) { check_admin_referer('media-form'); // Upload File button was clicked $id = media_handle_upload('async-upload', $_REQUEST['post_id']); unset($_FILES); if ( is_wp_error($id) ) { $errors['upload_error'] = $id; $id = false; } } if ( !empty($_POST['insertonlybutton']) ) { $href = $_POST['insertonly']['href']; if ( !empty($href) && !strpos($href, '://') ) $href = "http://$href"; $title = esc_attr($_POST['insertonly']['title']); if ( empty($title) ) $title = esc_attr( basename($href) ); if ( !empty($title) && !empty($href) ) $html = "$title"; $html = apply_filters('audio_send_to_editor_url', $html, $href, $title); return media_send_to_editor($html); } if ( !empty($_POST) ) { $return = media_upload_form_handler(); if ( is_string($return) ) return $return; if ( is_array($return) ) $errors = $return; } if ( isset($_POST['save']) ) { $errors['upload_notice'] = __('Saved.'); return media_upload_gallery(); } if ( isset($_GET['tab']) && $_GET['tab'] == 'type_url' ) return wp_iframe( 'media_upload_type_url_form', 'audio', $errors, $id ); return wp_iframe( 'media_upload_type_form', 'audio', $errors, $id ); } /** * {@internal Missing Short Description}} * * @since 2.5.0 * * @return unknown */ function media_upload_video() { $errors = array(); $id = 0; if ( isset($_POST['html-upload']) && !empty($_FILES) ) { check_admin_referer('media-form'); // Upload File button was clicked $id = media_handle_upload('async-upload', $_REQUEST['post_id']); unset($_FILES); if ( is_wp_error($id) ) { $errors['upload_error'] = $id; $id = false; } } if ( !empty($_POST['insertonlybutton']) ) { $href = $_POST['insertonly']['href']; if ( !empty($href) && !strpos($href, '://') ) $href = "http://$href"; $title = esc_attr($_POST['insertonly']['title']); if ( empty($title) ) $title = esc_attr( basename($href) ); if ( !empty($title) && !empty($href) ) $html = "$title"; $html = apply_filters('video_send_to_editor_url', $html, $href, $title); return media_send_to_editor($html); } if ( !empty($_POST) ) { $return = media_upload_form_handler(); if ( is_string($return) ) return $return; if ( is_array($return) ) $errors = $return; } if ( isset($_POST['save']) ) { $errors['upload_notice'] = __('Saved.'); return media_upload_gallery(); } if ( isset($_GET['tab']) && $_GET['tab'] == 'type_url' ) return wp_iframe( 'media_upload_type_url_form', 'video', $errors, $id ); return wp_iframe( 'media_upload_type_form', 'video', $errors, $id ); } /** * {@internal Missing Short Description}} * * @since 2.5.0 * * @return unknown */ function media_upload_file() { $errors = array(); $id = 0; if ( isset($_POST['html-upload']) && !empty($_FILES) ) { check_admin_referer('media-form'); // Upload File button was clicked $id = media_handle_upload('async-upload', $_REQUEST['post_id']); unset($_FILES); if ( is_wp_error($id) ) { $errors['upload_error'] = $id; $id = false; } } if ( !empty($_POST['insertonlybutton']) ) { $href = $_POST['insertonly']['href']; if ( !empty($href) && !strpos($href, '://') ) $href = "http://$href"; $title = esc_attr($_POST['insertonly']['title']); if ( empty($title) ) $title = basename($href); if ( !empty($title) && !empty($href) ) $html = "$title"; $html = apply_filters('file_send_to_editor_url', $html, esc_url_raw($href), $title); return media_send_to_editor($html); } if ( !empty($_POST) ) { $return = media_upload_form_handler(); if ( is_string($return) ) return $return; if ( is_array($return) ) $errors = $return; } if ( isset($_POST['save']) ) { $errors['upload_notice'] = __('Saved.'); return media_upload_gallery(); } if ( isset($_GET['tab']) && $_GET['tab'] == 'type_url' ) return wp_iframe( 'media_upload_type_url_form', 'file', $errors, $id ); return wp_iframe( 'media_upload_type_form', 'file', $errors, $id ); } /** * {@internal Missing Short Description}} * * @since 2.5.0 * * @return unknown */ function media_upload_gallery() { $errors = array(); if ( !empty($_POST) ) { $return = media_upload_form_handler(); if ( is_string($return) ) return $return; if ( is_array($return) ) $errors = $return; } wp_enqueue_script('admin-gallery'); return wp_iframe( 'media_upload_gallery_form', $errors ); } /** * {@internal Missing Short Description}} * * @since 2.5.0 * * @return unknown */ function media_upload_library() { $errors = array(); if ( !empty($_POST) ) { $return = media_upload_form_handler(); if ( is_string($return) ) return $return; if ( is_array($return) ) $errors = $return; } return wp_iframe( 'media_upload_library_form', $errors ); } /** * Retrieve HTML for the image alignment radio buttons with the specified one checked. * * @since 2.7.0 * * @param unknown_type $post * @param unknown_type $checked * @return unknown */ function image_align_input_fields( $post, $checked = '' ) { if ( empty($checked) ) $checked = get_user_setting('align', 'none'); $alignments = array('none' => __('None'), 'left' => __('Left'), 'center' => __('Center'), 'right' => __('Right')); if ( !array_key_exists( (string) $checked, $alignments ) ) $checked = 'none'; $out = array(); foreach ( $alignments as $name => $label ) { $name = esc_attr($name); $out[] = ""; } return join("\n", $out); } /** * Retrieve HTML for the size radio buttons with the specified one checked. * * @since 2.7.0 * * @param unknown_type $post * @param unknown_type $check * @return unknown */ function image_size_input_fields( $post, $check = '' ) { // get a list of the actual pixel dimensions of each possible intermediate version of this image $size_names = array('thumbnail' => __('Thumbnail'), 'medium' => __('Medium'), 'large' => __('Large'), 'full' => __('Full Size')); if ( empty($check) ) $check = get_user_setting('imgsize', 'medium'); foreach ( $size_names as $size => $label ) { $downsize = image_downsize($post->ID, $size); $checked = ''; // is this size selectable? $enabled = ( $downsize[3] || 'full' == $size ); $css_id = "image-size-{$size}-{$post->ID}"; // if this size is the default but that's not available, don't select it if ( $size == $check ) { if ( $enabled ) $checked = " checked='checked'"; else $check = ''; } elseif ( !$check && $enabled && 'thumbnail' != $size ) { // if $check is not enabled, default to the first available size that's bigger than a thumbnail $check = $size; $checked = " checked='checked'"; } $html = "
"; $html .= ""; // only show the dimensions if that choice is available if ( $enabled ) $html .= " "; $html .= '
'; $out[] = $html; } return array( 'label' => __('Size'), 'input' => 'html', 'html' => join("\n", $out), ); } /** * Retrieve HTML for the Link URL buttons with the default link type as specified. * * @since 2.7.0 * * @param unknown_type $post * @param unknown_type $url_type * @return unknown */ function image_link_input_fields($post, $url_type = '') { $file = wp_get_attachment_url($post->ID); $link = get_attachment_link($post->ID); if ( empty($url_type) ) $url_type = get_user_setting('urlbutton', 'post'); $url = ''; if ( $url_type == 'file' ) $url = $file; elseif ( $url_type == 'post' ) $url = $link; return "
"; } /** * {@internal Missing Short Description}} * * @since 2.5.0 * * @param unknown_type $form_fields * @param unknown_type $post * @return unknown */ function image_attachment_fields_to_edit($form_fields, $post) { if ( substr($post->post_mime_type, 0, 5) == 'image' ) { $alt = get_post_meta($post->ID, '_wp_attachment_image_alt', true); if ( empty($alt) ) $alt = ''; $form_fields['post_title']['required'] = true; $form_fields['image_alt'] = array( 'value' => $alt, 'label' => __('Alternate Text'), 'helps' => __('Alt text for the image, e.g. “The Mona Lisa”') ); $form_fields['align'] = array( 'label' => __('Alignment'), 'input' => 'html', 'html' => image_align_input_fields($post, get_option('image_default_align')), ); $form_fields['image-size'] = image_size_input_fields( $post, get_option('image_default_size', 'medium') ); } else { unset( $form_fields['image_alt'] ); } return $form_fields; } add_filter('attachment_fields_to_edit', 'image_attachment_fields_to_edit', 10, 2); /** * {@internal Missing Short Description}} * * @since 2.5.0 * * @param unknown_type $form_fields * @param unknown_type $post * @return unknown */ function media_single_attachment_fields_to_edit( $form_fields, $post ) { unset($form_fields['url'], $form_fields['align'], $form_fields['image-size']); return $form_fields; } /** * {@internal Missing Short Description}} * * @since 2.8.0 * * @param unknown_type $form_fields * @param unknown_type $post * @return unknown */ function media_post_single_attachment_fields_to_edit( $form_fields, $post ) { unset($form_fields['image_url']); return $form_fields; } /** * {@internal Missing Short Description}} * * @since 2.5.0 * * @param unknown_type $post * @param unknown_type $attachment * @return unknown */ function image_attachment_fields_to_save($post, $attachment) { if ( substr($post['post_mime_type'], 0, 5) == 'image' ) { if ( strlen(trim($post['post_title'])) == 0 ) { $post['post_title'] = preg_replace('/\.\w+$/', '', basename($post['guid'])); $post['errors']['post_title']['errors'][] = __('Empty Title filled from filename.'); } } return $post; } add_filter('attachment_fields_to_save', 'image_attachment_fields_to_save', 10, 2); /** * {@internal Missing Short Description}} * * @since 2.5.0 * * @param unknown_type $html * @param unknown_type $attachment_id * @param unknown_type $attachment * @return unknown */ function image_media_send_to_editor($html, $attachment_id, $attachment) { $post =& get_post($attachment_id); if ( substr($post->post_mime_type, 0, 5) == 'image' ) { $url = $attachment['url']; $align = !empty($attachment['align']) ? $attachment['align'] : 'none'; $size = !empty($attachment['image-size']) ? $attachment['image-size'] : 'medium'; $alt = !empty($attachment['image_alt']) ? $attachment['image_alt'] : ''; $rel = ( $url == get_attachment_link($attachment_id) ); return get_image_send_to_editor($attachment_id, $attachment['post_excerpt'], $attachment['post_title'], $align, $url, $rel, $size, $alt); } return $html; } add_filter('media_send_to_editor', 'image_media_send_to_editor', 10, 3); /** * {@internal Missing Short Description}} * * @since 2.5.0 * * @param unknown_type $post * @param unknown_type $errors * @return unknown */ function get_attachment_fields_to_edit($post, $errors = null) { if ( is_int($post) ) $post =& get_post($post); if ( is_array($post) ) $post = (object) $post; $image_url = wp_get_attachment_url($post->ID); $edit_post = sanitize_post($post, 'edit'); $form_fields = array( 'post_title' => array( 'label' => __('Title'), 'value' => $edit_post->post_title ), 'image_alt' => array(), 'post_excerpt' => array( 'label' => __('Caption'), 'value' => $edit_post->post_excerpt ), 'post_content' => array( 'label' => __('Description'), 'value' => $edit_post->post_content, 'input' => 'textarea' ), 'url' => array( 'label' => __('Link URL'), 'input' => 'html', 'html' => image_link_input_fields($post, get_option('image_default_link_type')), 'helps' => __('Enter a link URL or click above for presets.') ), 'menu_order' => array( 'label' => __('Order'), 'value' => $edit_post->menu_order ), 'image_url' => array( 'label' => __('File URL'), 'input' => 'html', 'html' => "
", 'value' => wp_get_attachment_url($post->ID), 'helps' => __('Location of the uploaded file.') ) ); foreach ( get_attachment_taxonomies($post) as $taxonomy ) { $t = (array) get_taxonomy($taxonomy); if ( ! $t['public'] ) continue; if ( empty($t['label']) ) $t['label'] = $taxonomy; if ( empty($t['args']) ) $t['args'] = array(); $terms = get_object_term_cache($post->ID, $taxonomy); if ( empty($terms) ) $terms = wp_get_object_terms($post->ID, $taxonomy, $t['args']); $values = array(); foreach ( $terms as $term ) $values[] = $term->name; $t['value'] = join(', ', $values); $form_fields[$taxonomy] = $t; } // Merge default fields with their errors, so any key passed with the error (e.g. 'error', 'helps', 'value') will replace the default // The recursive merge is easily traversed with array casting: foreach( (array) $things as $thing ) $form_fields = array_merge_recursive($form_fields, (array) $errors); $form_fields = apply_filters('attachment_fields_to_edit', $form_fields, $post); return $form_fields; } /** * Retrieve HTML for media items of post gallery. * * The HTML markup retrieved will be created for the progress of SWF Upload * component. Will also create link for showing and hiding the form to modify * the image attachment. * * @since 2.5.0 * * @param int $post_id Optional. Post ID. * @param array $errors Errors for attachment, if any. * @return string */ function get_media_items( $post_id, $errors ) { $attachments = array(); if ( $post_id ) { $post = get_post($post_id); if ( $post && $post->post_type == 'attachment' ) $attachments = array($post->ID => $post); else $attachments = get_children( array( 'post_parent' => $post_id, 'post_type' => 'attachment', 'orderby' => 'menu_order ASC, ID', 'order' => 'DESC') ); } else { if ( is_array($GLOBALS['wp_the_query']->posts) ) foreach ( $GLOBALS['wp_the_query']->posts as $attachment ) $attachments[$attachment->ID] = $attachment; } $output = ''; foreach ( (array) $attachments as $id => $attachment ) { if ( $attachment->post_status == 'trash' ) continue; if ( $item = get_media_item( $id, array( 'errors' => isset($errors[$id]) ? $errors[$id] : null) ) ) $output .= "\n
$item\n
"; } return $output; } /** * Retrieve HTML form for modifying the image attachment. * * @since 2.5.0 * * @param int $attachment_id Attachment ID for modification. * @param string|array $args Optional. Override defaults. * @return string HTML form for attachment. */ function get_media_item( $attachment_id, $args = null ) { global $redir_tab; if ( ( $attachment_id = intval( $attachment_id ) ) && $thumb_url = wp_get_attachment_image_src( $attachment_id, 'thumbnail', true ) ) $thumb_url = $thumb_url[0]; else $thumb_url = false; $post = get_post( $attachment_id ); $default_args = array( 'errors' => null, 'send' => $post->post_parent ? post_type_supports( get_post_type( $post->post_parent ), 'editor' ) : true, 'delete' => true, 'toggle' => true, 'show_title' => true ); $args = wp_parse_args( $args, $default_args ); $args = apply_filters( 'get_media_item_args', $args ); extract( $args, EXTR_SKIP ); $toggle_on = __( 'Show' ); $toggle_off = __( 'Hide' ); $filename = esc_html( basename( $post->guid ) ); $title = esc_attr( $post->post_title ); if ( $_tags = get_the_tags( $attachment_id ) ) { foreach ( $_tags as $tag ) $tags[] = $tag->name; $tags = esc_attr( join( ', ', $tags ) ); } $post_mime_types = get_post_mime_types(); $keys = array_keys( wp_match_mime_types( array_keys( $post_mime_types ), $post->post_mime_type ) ); $type = array_shift( $keys ); $type_html = ""; $form_fields = get_attachment_fields_to_edit( $post, $errors ); if ( $toggle ) { $class = empty( $errors ) ? 'startclosed' : 'startopen'; $toggle_links = " $toggle_on $toggle_off"; } else { $class = 'form-table'; $toggle_links = ''; } $display_title = ( !empty( $title ) ) ? $title : $filename; // $title shouldn't ever be empty, but just in case $display_title = $show_title ? "
" . wp_html_excerpt( $display_title, 60 ) . "
" : ''; $gallery = ( ( isset( $_REQUEST['tab'] ) && 'gallery' == $_REQUEST['tab'] ) || ( isset( $redir_tab ) && 'gallery' == $redir_tab ) ); $order = ''; foreach ( $form_fields as $key => $val ) { if ( 'menu_order' == $key ) { if ( $gallery ) $order = ""; else $order = ""; unset( $form_fields['menu_order'] ); break; } } $media_dims = ''; $meta = wp_get_attachment_metadata( $post->ID ); if ( is_array( $meta ) && array_key_exists( 'width', $meta ) && array_key_exists( 'height', $meta ) ) $media_dims .= "{$meta['width']} × {$meta['height']} "; $media_dims = apply_filters( 'media_meta', $media_dims, $post ); $image_edit_button = ''; if ( gd_edit_image_support( $post->post_mime_type ) ) { $nonce = wp_create_nonce( "image_editor-$post->ID" ); $image_edit_button = " "; } $attachment_url = get_permalink( $attachment_id ); $item = " $type_html $toggle_links $order $display_title \n"; $item .= " \n"; $defaults = array( 'input' => 'text', 'required' => false, 'value' => '', 'extra_rows' => array(), ); if ( $send ) $send = get_submit_button( __( 'Insert into Post' ), 'button', "send[$attachment_id]", false ); if ( $delete && current_user_can( 'delete_post', $attachment_id ) ) { if ( !EMPTY_TRASH_DAYS ) { $delete = "" . __( 'Delete Permanently' ) . ''; } elseif ( !MEDIA_TRASH ) { $delete = "" . __( 'Delete' ) . ""; } else { $delete = "" . __( 'Move to Trash' ) . ""; } } else { $delete = ''; } $thumbnail = ''; $calling_post_id = 0; if ( isset( $_GET['post_id'] ) ) $calling_post_id = absint( $_GET['post_id'] ); elseif ( isset( $_POST ) && count( $_POST ) ) // Like for async-upload where $_GET['post_id'] isn't set $calling_post_id = $post->post_parent; if ( 'image' == $type && $calling_post_id && current_theme_supports( 'post-thumbnails', get_post_type( $calling_post_id ) ) && get_post_thumbnail_id( $calling_post_id ) != $attachment_id ) { $ajax_nonce = wp_create_nonce( "set_post_thumbnail-$calling_post_id" ); $thumbnail = "" . esc_html__( "Use as featured image" ) . ""; } if ( ( $send || $thumbnail || $delete ) && !isset( $form_fields['buttons'] ) ) $form_fields['buttons'] = array( 'tr' => "\t\t\n" ); $hidden_fields = array(); foreach ( $form_fields as $id => $field ) { if ( $id[0] == '_' ) continue; if ( !empty( $field['tr'] ) ) { $item .= $field['tr']; continue; } $field = array_merge( $defaults, $field ); $name = "attachments[$attachment_id][$id]"; if ( $field['input'] == 'hidden' ) { $hidden_fields[$name] = $field['value']; continue; } $required = $field['required'] ? '*' : ''; $aria_required = $field['required'] ? " aria-required='true' " : ''; $class = $id; $class .= $field['required'] ? ' form-required' : ''; $item .= "\t\t\n\t\t\t\n\t\t\t\n\t\t\n"; $extra_rows = array(); if ( !empty( $field['errors'] ) ) foreach ( array_unique( (array) $field['errors'] ) as $error ) $extra_rows['error'][] = $error; if ( !empty( $field['extra_rows'] ) ) foreach ( $field['extra_rows'] as $class => $rows ) foreach ( (array) $rows as $html ) $extra_rows[$class][] = $html; foreach ( $extra_rows as $class => $rows ) foreach ( $rows as $html ) $item .= "\t\t\n"; } if ( !empty( $form_fields['_final'] ) ) $item .= "\t\t\n"; $item .= "\t\n"; $item .= "\t

$image_edit_button

" . __('File name:') . " $filename

" . __('File type:') . " $post->post_mime_type

" . __('Upload date:') . " " . mysql2date( get_option('date_format'), $post->post_date ). '

'; if ( !empty( $media_dims ) ) $item .= "

" . __('Dimensions:') . " $media_dims

\n"; $item .= "
$send $thumbnail $delete
"; if ( !empty( $field[ $field['input'] ] ) ) $item .= $field[ $field['input'] ]; elseif ( $field['input'] == 'textarea' ) { if ( user_can_richedit() ) { // textarea_escaped when user_can_richedit() = false $field['value'] = esc_textarea( $field['value'] ); } $item .= "'; } else { $item .= ""; } if ( !empty( $field['helps'] ) ) $item .= "

" . join( "

\n

", array_unique( (array) $field['helps'] ) ) . '

'; $item .= "
$html
{$form_fields['_final']}
\n"; foreach ( $hidden_fields as $name => $value ) $item .= "\t\n"; if ( $post->post_parent < 1 && isset( $_REQUEST['post_id'] ) ) { $parent = (int) $_REQUEST['post_id']; $parent_name = "attachments[$attachment_id][post_parent]"; $item .= "\t\n"; } return $item; } /** * {@internal Missing Short Description}} * * @since 2.5.0 */ function media_upload_header() { ?>
1024 && $u < count( $sizes ) - 1; $u++ ) $upload_size_unit /= 1024; if ( $u < 0 ) { $upload_size_unit = 0; $u = 0; } else { $upload_size_unit = (int) $upload_size_unit; } ?>
get_error_message(); ?>
' . sprintf( __( 'Sorry, you have filled your storage quota (%s MB).' ), get_space_allowed() ) . '

'; return; } do_action('pre-upload-ui'); if ( $flash ) : // Set the post params, which SWFUpload will post back with the file, and pass // them through a filter. $post_params = array( "post_id" => $post_id, "auth_cookie" => (is_ssl() ? $_COOKIE[SECURE_AUTH_COOKIE] : $_COOKIE[AUTH_COOKIE]), "logged_in_cookie" => $_COOKIE[LOGGED_IN_COOKIE], "_wpnonce" => wp_create_nonce('media-form'), "type" => $type, "tab" => $tab, "short" => "1", ); $post_params = apply_filters( 'swfupload_post_params', $post_params ); $p = array(); foreach ( $post_params as $param => $val ) $p[] = "\t\t'$param' : '$val'"; $post_params_str = implode( ", \n", $p ); // #8545. wmode=transparent cannot be used with SWFUpload if ( 'media-new.php' == $pagenow ) { $upload_image_path = get_user_option( 'admin_color' ); if ( 'classic' != $upload_image_path ) $upload_image_path = 'fresh'; $upload_image_path = admin_url( 'images/upload-' . $upload_image_path . '.png?ver=20101205' ); } else { $upload_image_path = includes_url( 'images/upload.png?ver=20100531' ); } ?>

'.esc_html($id->get_error_message()).'
'; exit; } } ?>

| |
add_query_arg( 'paged', '%#%' ), 'format' => '', 'prev_text' => __('«'), 'next_text' => __('»'), 'total' => ceil($wp_query->found_posts / 10), 'current' => $_GET['paged'] )); if ( $page_links ) echo "
$page_links
"; ?>
posts WHERE post_type = 'attachment' ORDER BY post_date DESC"; $arc_result = $wpdb->get_results( $arc_query ); $month_count = count($arc_result); if ( $month_count && !( 1 == $month_count && 0 == $arc_result[0]->mmonth ) ) { ?>

'; } else { $caption = ''; } $default_align = get_option('image_default_align'); if ( empty($default_align) ) $default_align = 'none'; return '

' . __('Insert an image from another web site') . '

' . $caption . ' ' . _insert_into_post_button('image') . '
*
*

' . __('Alt text for the image, e.g. “The Mona Lisa”') . '


' . __('Enter a link URL or click above for presets.') . '

'; } /** * {@internal Missing Short Description}} * * @since 2.7.0 * * @return unknown */ function type_url_form_audio() { return ' ' . _insert_into_post_button('audio') . '
*
*
' . __('Link text, e.g. “Still Alive by Jonathan Coulton”') . '
'; } /** * {@internal Missing Short Description}} * * @since 2.7.0 * * @return unknown */ function type_url_form_video() { return ' ' . _insert_into_post_button('video') . '
*
*
' . __('Link text, e.g. “Lucy on YouTube”') . '
'; } /** * {@internal Missing Short Description}} * * @since 2.7.0 * * @return unknown */ function type_url_form_file() { return ' ' . _insert_into_post_button('file') . '
*
*
' . __('Link text, e.g. “Ransom Demands (PDF)”') . '
'; } function _insert_into_post_button($type) { if ( !post_type_supports(get_post_type($_GET['post_id']), 'editor') ) return ''; if ( 'image' == $type ) return ' '; return ' ' . get_submit_button( __( 'Insert into Post' ), 'button', 'insertonlybutton', false ) . ' '; } /** * {@internal Missing Short Description}} * * Support a GET parameter for disabling the flash uploader. * * @since 2.6.0 * * @param unknown_type $flash * @return unknown */ function media_upload_use_flash($flash) { if ( array_key_exists('flash', $_REQUEST) ) $flash = !empty($_REQUEST['flash']); return $flash; } add_filter('flash_uploader', 'media_upload_use_flash'); /** * {@internal Missing Short Description}} * * @since 2.6.0 */ function media_upload_flash_bypass() { echo '

'; printf( __('You are using the Flash uploader. Problems? Try the Browser uploader instead.'), esc_url(add_query_arg('flash', 0)) ); echo '

'; } /** * {@internal Missing Short Description}} * * @since 2.6.0 */ function media_upload_html_bypass($flash = true) { echo '

'; _e('You are using the Browser uploader.'); if ( $flash ) { // the user manually selected the browser uploader, so let them switch back to Flash echo ' '; printf( __('Try the Flash uploader instead.'), esc_url(add_query_arg('flash', 1)) ); } echo "

\n"; } add_action('post-flash-upload-ui', 'media_upload_flash_bypass'); add_action('post-html-upload-ui', 'media_upload_html_bypass'); /** * {@internal Missing Short Description}} * * Make sure the GET parameter sticks when we submit a form. * * @since 2.6.0 * * @param unknown_type $url * @return unknown */ function media_upload_bypass_url($url) { if ( array_key_exists('flash', $_REQUEST) ) $url = add_query_arg('flash', intval($_REQUEST['flash'])); return $url; } add_filter('media_upload_form_url', 'media_upload_bypass_url'); add_filter('async_upload_image', 'get_media_item', 10, 2); add_filter('async_upload_audio', 'get_media_item', 10, 2); add_filter('async_upload_video', 'get_media_item', 10, 2); add_filter('async_upload_file', 'get_media_item', 10, 2); add_action('media_upload_image', 'media_upload_image'); add_action('media_upload_audio', 'media_upload_audio'); add_action('media_upload_video', 'media_upload_video'); add_action('media_upload_file', 'media_upload_file'); add_filter('media_upload_gallery', 'media_upload_gallery'); add_filter('media_upload_library', 'media_upload_library'); wp-admin/includes/menu.php0000644002347300047320000001310511656660353015416 0ustar vonfabpsacln $sub) { foreach ($sub as $index => $data) { if ( ! current_user_can($data[1]) ) { unset(${$sub_loop}[$parent][$index]); $_wp_submenu_nopriv[$parent][$data[2]] = true; } } unset($index, $data); if ( empty(${$sub_loop}[$parent]) ) unset(${$sub_loop}[$parent]); } unset($sub, $parent); } unset($sub_loop); // Loop over the top-level menu. // Menus for which the original parent is not accessible due to lack of privs will have the next // submenu in line be assigned as the new menu parent. foreach ( $menu as $id => $data ) { if ( empty($submenu[$data[2]]) ) continue; $subs = $submenu[$data[2]]; $first_sub = array_shift($subs); $old_parent = $data[2]; $new_parent = $first_sub[2]; // If the first submenu is not the same as the assigned parent, // make the first submenu the new parent. if ( $new_parent != $old_parent ) { $_wp_real_parent_file[$old_parent] = $new_parent; $menu[$id][2] = $new_parent; foreach ($submenu[$old_parent] as $index => $data) { $submenu[$new_parent][$index] = $submenu[$old_parent][$index]; unset($submenu[$old_parent][$index]); } unset($submenu[$old_parent], $index); if ( isset($_wp_submenu_nopriv[$old_parent]) ) $_wp_submenu_nopriv[$new_parent] = $_wp_submenu_nopriv[$old_parent]; } } unset($id, $data, $subs, $first_sub, $old_parent, $new_parent); if ( is_network_admin() ) do_action('network_admin_menu', ''); elseif ( is_user_admin() ) do_action('user_admin_menu', ''); else do_action('admin_menu', ''); // Remove menus that have no accessible submenus and require privs that the user does not have. // Run re-parent loop again. foreach ( $menu as $id => $data ) { if ( ! current_user_can($data[1]) ) $_wp_menu_nopriv[$data[2]] = true; // If submenu is empty... if ( empty($submenu[$data[2]]) ) { // And user doesn't have privs, remove menu. if ( isset( $_wp_menu_nopriv[$data[2]] ) ) { unset($menu[$id]); } } } unset($id, $data); // Remove any duplicated seperators $seperator_found = false; foreach ( $menu as $id => $data ) { if ( 0 == strcmp('wp-menu-separator', $data[4] ) ) { if (false == $seperator_found) { $seperator_found = true; } else { unset($menu[$id]); $seperator_found = false; } } else { $seperator_found = false; } } unset($id, $data); function add_cssclass($add, $class) { $class = empty($class) ? $add : $class .= ' ' . $add; return $class; } function add_menu_classes($menu) { $first = $lastorder = false; $i = 0; $mc = count($menu); foreach ( $menu as $order => $top ) { $i++; if ( 0 == $order ) { // dashboard is always shown/single $menu[0][4] = add_cssclass('menu-top-first', $top[4]); $lastorder = 0; continue; } if ( 0 === strpos($top[2], 'separator') ) { // if separator $first = true; $c = $menu[$lastorder][4]; $menu[$lastorder][4] = add_cssclass('menu-top-last', $c); continue; } if ( $first ) { $c = $menu[$order][4]; $menu[$order][4] = add_cssclass('menu-top-first', $c); $first = false; } if ( $mc == $i ) { // last item $c = $menu[$order][4]; $menu[$order][4] = add_cssclass('menu-top-last', $c); } $lastorder = $order; } return apply_filters( 'add_menu_classes', $menu ); } uksort($menu, "strnatcasecmp"); // make it all pretty if ( apply_filters('custom_menu_order', false) ) { $menu_order = array(); foreach ( $menu as $menu_item ) { $menu_order[] = $menu_item[2]; } unset($menu_item); $default_menu_order = $menu_order; $menu_order = apply_filters('menu_order', $menu_order); $menu_order = array_flip($menu_order); $default_menu_order = array_flip($default_menu_order); function sort_menu($a, $b) { global $menu_order, $default_menu_order; $a = $a[2]; $b = $b[2]; if ( isset($menu_order[$a]) && !isset($menu_order[$b]) ) { return -1; } elseif ( !isset($menu_order[$a]) && isset($menu_order[$b]) ) { return 1; } elseif ( isset($menu_order[$a]) && isset($menu_order[$b]) ) { if ( $menu_order[$a] == $menu_order[$b] ) return 0; return ($menu_order[$a] < $menu_order[$b]) ? -1 : 1; } else { return ($default_menu_order[$a] <= $default_menu_order[$b]) ? -1 : 1; } } usort($menu, 'sort_menu'); unset($menu_order, $default_menu_order); } if ( !user_can_access_admin_page() ) { do_action('admin_page_access_denied'); wp_die( __('You do not have sufficient permissions to access this page.') ); } $menu = add_menu_classes($menu); ?>wp-admin/includes/meta-boxes.php0000644002347300047320000011667411656660354016536 0ustar vonfabpsaclnpost_type; $post_type_object = get_post_type_object($post_type); $can_publish = current_user_can($post_type_object->cap->publish_posts); ?>
post_status && 'future' != $post->post_status && 'pending' != $post->post_status ) { ?> post_status ) { ?>style="display:none" type="submit" name="save" id="save-post" value="" tabindex="4" class="button button-highlighted" /> post_status && $can_publish ) { ?>
post_status ) { $preview_link = esc_url( get_permalink( $post->ID ) ); $preview_button = __( 'Preview Changes' ); } else { $preview_link = get_permalink( $post->ID ); if ( is_ssl() ) $preview_link = str_replace( 'http://', 'https://', $preview_link ); $preview_link = esc_url( apply_filters( 'preview_post_link', add_query_arg( 'preview', 'true', $preview_link ) ) ); $preview_button = __( 'Preview' ); } ?>
post_status ) { case 'private': _e('Privately Published'); break; case 'publish': _e('Published'); break; case 'future': _e('Scheduled'); break; case 'pending': _e('Pending Review'); break; case 'draft': case 'auto-draft': _e('Draft'); break; } ?> post_status || 'private' == $post->post_status || $can_publish ) { ?> post_status ) { ?>style="display:none;" class="edit-post-status hide-if-no-js" tabindex='4'>
post_status ) { $post->post_password = ''; $visibility = 'private'; $visibility_trans = __('Private'); } elseif ( !empty( $post->post_password ) ) { $visibility = 'password'; $visibility_trans = __('Password protected'); } elseif ( $post_type == 'post' && is_sticky( $post->ID ) ) { $visibility = 'public'; $visibility_trans = __('Public, Sticky'); } else { $visibility = 'public'; $visibility_trans = __('Public'); } echo esc_html( $visibility_trans ); ?>
ID)); ?> /> />
ID)); ?> tabindex="4" />
/>

/>

ID ) { if ( 'future' == $post->post_status ) { // scheduled for publishing at a future date $stamp = __('Scheduled for: %1$s'); } else if ( 'publish' == $post->post_status || 'private' == $post->post_status ) { // already published $stamp = __('Published on: %1$s'); } else if ( '0000-00-00 00:00:00' == $post->post_date_gmt ) { // draft, 1 or more saves, no date specified $stamp = __('Publish immediately'); } else if ( time() < strtotime( $post->post_date_gmt . ' +0000' ) ) { // draft, 1 or more saves, future date specified $stamp = __('Schedule for: %1$s'); } else { // draft, 1 or more saves, date specified $stamp = __('Publish on: %1$s'); } $date = date_i18n( $datef, strtotime( $post->post_date ) ); } else { // draft (no saves, and thus no date specified) $stamp = __('Publish immediately'); $date = date_i18n( $datef, strtotime( current_time('mysql') ) ); } if ( $can_publish ) : // Contributors don't get to choose the date of publish ?>
ID ) ) { if ( !EMPTY_TRASH_DAYS ) $delete_text = __('Delete Permanently'); else $delete_text = __('Move to Trash'); ?>
post_status, array('publish', 'future', 'private') ) || 0 == $post->ID ) { if ( $can_publish ) : if ( !empty($post->post_date_gmt) && time() < strtotime( $post->post_date_gmt . ' +0000' ) ) : ?> '5', 'accesskey' => 'p' ) ); ?> '5', 'accesskey' => 'p' ) ); ?> '5', 'accesskey' => 'p' ) ); ?>
post_type, 'post-formats' ) ) : $post_formats = get_theme_support( 'post-formats' ); if ( is_array( $post_formats[0] ) ) : $post_format = get_post_format( $post->ID ); if ( !$post_format ) $post_format = '0'; $post_format_display = get_post_format_string( $post_format ); // Add in the current one if it isn't there yet, in case the current theme doesn't support it if ( $post_format && !in_array( $post_format, $post_formats[0] ) ) $post_formats[0][] = $post_format; ?>
/>
/>
'post_tag'); if ( !isset($box['args']) || !is_array($box['args']) ) $args = array(); else $args = $box['args']; extract( wp_parse_args($args, $defaults), EXTR_SKIP ); $tax_name = esc_attr($taxonomy); $taxonomy = get_taxonomy($taxonomy); $disabled = !current_user_can($taxonomy->cap->assign_terms) ? 'disabled="disabled"' : ''; ?>

labels->add_or_remove_items; ?>

cap->assign_terms) ) : ?>
labels->add_new_item; ?>

labels->separate_items_with_commas ); ?>

cap->assign_terms) ) : ?>

labels->choose_from_most_used; ?>

'category'); if ( !isset($box['args']) || !is_array($box['args']) ) $args = array(); else $args = $box['args']; extract( wp_parse_args($args, $defaults), EXTR_SKIP ); $tax = get_taxonomy($taxonomy); ?>
"; // Allows for an empty term set to be sent. 0 is an invalid Term ID and will be ignored by empty() checks. ?>
    ID, array( 'taxonomy' => $taxonomy, 'popular_cats' => $popular_ids ) ) ?>
cap->edit_terms) ) : ?>

labels->add_new_item ); ?>

$taxonomy, 'hide_empty' => 0, 'name' => 'new'.$taxonomy.'_parent', 'orderby' => 'name', 'hierarchical' => 1, 'show_option_none' => '— ' . $tax->labels->parent_item . ' —', 'tab_index' => 3 ) ); ?>

Learn more about manual excerpts.'); ?>

to_ping) ) .'" />'; if ('' != $post->pinged) { $pings = '

'. __('Already pinged:') . '

    '; $already_pinged = explode("\n", trim($post->pinged)); foreach ($already_pinged as $pinged_url) { $pings .= "\n\t
  • " . esc_html($pinged_url) . "
  • "; } $pings .= '
'; } ?>


()

pingbacks, no other action necessary.'); ?>

ID); list_meta($metadata); meta_form(); ?>

use in your theme.'); ?>


get_var($wpdb->prepare("SELECT count(1) FROM $wpdb->comments WHERE comment_post_ID = '%d' AND ( comment_approved = '0' OR comment_approved = '1')", $post_ID)); if ( 1 > $total ) { echo '

' . __('No comments yet.') . '

'; return; } wp_nonce_field( 'get-comments', 'add_comment_nonce', false ); $wp_list_table = _get_list_table('WP_Post_Comments_List_Table'); $wp_list_table->display( true ); ?>

'authors', 'name' => 'post_author_override', 'selected' => empty($post->ID) ? $user_ID : $post->post_author, 'include_selected' => true ) ); } /** * Display list of revisions. * * @since 2.6.0 * * @param object $post */ function post_revisions_meta_box($post) { wp_list_post_revisions(); } // -- Page related Meta Boxes /** * Display page attributes form fields. * * @since 2.7.0 * * @param object $post */ function page_attributes_meta_box($post) { $post_type_object = get_post_type_object($post->post_type); if ( $post_type_object->hierarchical ) { $pages = wp_dropdown_pages(array('post_type' => $post->post_type, 'exclude_tree' => $post->ID, 'selected' => $post->post_parent, 'name' => 'parent_id', 'show_option_none' => __('(no parent)'), 'sort_column'=> 'menu_order, post_title', 'echo' => 0)); if ( ! empty($pages) ) { ?>

post_type && 0 != count( get_page_templates() ) ) { $template = !empty($post->page_template) ? $post->page_template : false; ?>

post_type ) _e( 'Need help? Use the Help tab in the upper right of your screen.' ); ?>

    link_id) ) wp_link_category_checklist($link->link_id); else wp_link_category_checklist(); ?>

link_rel ) ? $link->link_rel : ''; // In PHP 5.3: $link_rel = $link->link_rel ?: ''; $rels = preg_split('/\s+/', $link_rel); if ('' != $value && in_array($value, $rels) ) { echo ' checked="checked"'; } if ('' == $value) { if ('family' == $class && strpos($link_rel, 'child') === false && strpos($link_rel, 'parent') === false && strpos($link_rel, 'sibling') === false && strpos($link_rel, 'spouse') === false && strpos($link_rel, 'kin') === false) echo ' checked="checked"'; if ('friendship' == $class && strpos($link_rel, 'friend') === false && strpos($link_rel, 'acquaintance') === false && strpos($link_rel, 'contact') === false) echo ' checked="checked"'; if ('geographical' == $class && strpos($link_rel, 'co-resident') === false && strpos($link_rel, 'neighbor') === false) echo ' checked="checked"'; if ('identity' == $class && in_array('me', $rels) ) echo ' checked="checked"'; } } /** * Display xfn form fields. * * @since 2.6.0 * * @param object $link */ function link_xfn_meta_box($link) { ?>

XFN.'); ?>

 
ID, '_thumbnail_id', true ); echo _wp_post_thumbnail_html( $thumbnail_id ); } wp-admin/includes/ms-deprecated.php0000644002347300047320000000302311656660354017166 0ustar vonfabpsaclnwp-admin/includes/misc.php0000644002347300047320000003773111656660355015422 0ustar vonfabpsacln $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; } } } if (!$foundit) { fwrite( $f, "\n# BEGIN {$marker}\n" ); foreach ( $insertion as $insertline ) fwrite( $f, "{$insertline}\n" ); fwrite( $f, "# END {$marker}\n" ); } fclose( $f ); return true; } else { return false; } } /** * Updates the htaccess file with the current rules if it is writable. * * Always writes to the file if it exists and is writable to ensure that we * blank out old rules. * * @since 1.5.0 */ function save_mod_rewrite_rules() { if ( is_multisite() ) return; global $wp_rewrite; $home_path = get_home_path(); $htaccess_file = $home_path.'.htaccess'; // If the file doesn't already exist check for write access to the directory and whether we have some rules. // else check for write access to the file. if ((!file_exists($htaccess_file) && is_writable($home_path) && $wp_rewrite->using_mod_rewrite_permalinks()) || is_writable($htaccess_file)) { if ( got_mod_rewrite() ) { $rules = explode( "\n", $wp_rewrite->mod_rewrite_rules() ); return insert_with_markers( $htaccess_file, 'WordPress', $rules ); } } return false; } /** * Updates the IIS web.config file with the current rules if it is writable. * If the permalinks do not require rewrite rules then the rules are deleted from the web.config file. * * @since 2.8.0 * * @return bool True if web.config was updated successfully */ function iis7_save_url_rewrite_rules(){ if ( is_multisite() ) return; global $wp_rewrite; $home_path = get_home_path(); $web_config_file = $home_path . 'web.config'; // Using win_is_writable() instead of is_writable() because of a bug in Windows PHP if ( iis7_supports_permalinks() && ( ( ! file_exists($web_config_file) && win_is_writable($home_path) && $wp_rewrite->using_mod_rewrite_permalinks() ) || win_is_writable($web_config_file) ) ) { $rule = $wp_rewrite->iis7_url_rewrite_rules(false, '', ''); if ( ! empty($rule) ) { return iis7_add_rewrite_rule($web_config_file, $rule); } else { return iis7_delete_rewrite_rule($web_config_file); } } return false; } /** * {@internal Missing Short Description}} * * @since 1.5.0 * * @param unknown_type $file */ 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 ); } else { $oldfiles[] = $file; } update_option( 'recently_edited', $oldfiles ); } /** * If siteurl or home changed, flush rewrite rules. * * @since 2.1.0 * * @param unknown_type $old_value * @param unknown_type $value */ function update_home_siteurl( $old_value, $value ) { global $wp_rewrite; if ( defined( "WP_INSTALLING" ) ) return; // If home changed, write rewrite rules to new location. $wp_rewrite->flush_rules(); } add_action( 'update_option_home', 'update_home_siteurl', 10, 2 ); add_action( 'update_option_siteurl', 'update_home_siteurl', 10, 2 ); /** * Shorten an URL, to be used as link text * * @since 1.2.1 * * @param string $url * @return string */ 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; } /** * Resets global variables based on $_GET and $_POST * * This function resets global variables based on the names passed * in the $vars array to the value of $_POST[$var] or $_GET[$var] or '' * if neither is defined. * * @since 2.0.0 * * @param array $vars An array of globals to reset. */ function wp_reset_vars( $vars ) { for ( $i=0; $iget_error_data() ) $message = $message->get_error_message() . ': ' . $message->get_error_data(); else $message = $message->get_error_message(); } echo "

$message

\n"; wp_ob_end_flush_all(); flush(); } function wp_doc_link_parse( $content ) { if ( !is_string( $content ) || empty( $content ) ) return array(); if ( !function_exists('token_get_all') ) return array(); $tokens = token_get_all( $content ); $functions = array(); $ignore_functions = array(); for ( $t = 0, $count = count( $tokens ); $t < $count; $t++ ) { if ( !is_array( $tokens[$t] ) ) continue; if ( T_STRING == $tokens[$t][0] && ( '(' == $tokens[ $t + 1 ] || '(' == $tokens[ $t + 2 ] ) ) { // If it's a function or class defined locally, there's not going to be any docs available if ( ( isset( $tokens[ $t - 2 ][1] ) && in_array( $tokens[ $t - 2 ][1], array( 'function', 'class' ) ) ) || ( isset( $tokens[ $t - 2 ][0] ) && T_OBJECT_OPERATOR == $tokens[ $t - 1 ][0] ) ) { $ignore_functions[] = $tokens[$t][1]; } // Add this to our stack of unique references $functions[] = $tokens[$t][1]; } } $functions = array_unique( $functions ); sort( $functions ); $ignore_functions = apply_filters( 'documentation_ignore_functions', $ignore_functions ); $ignore_functions = array_unique( $ignore_functions ); $out = array(); foreach ( $functions as $function ) { if ( in_array( $function, $ignore_functions ) ) continue; $out[] = $function; } return $out; } /** * Saves option for number of rows when listing posts, pages, comments, etc. * * @since 2.8 **/ function set_screen_options() { if ( isset($_POST['wp_screen_options']) && is_array($_POST['wp_screen_options']) ) { check_admin_referer( 'screen-options-nonce', 'screenoptionnonce' ); if ( !$user = wp_get_current_user() ) return; $option = $_POST['wp_screen_options']['option']; $value = $_POST['wp_screen_options']['value']; if ( !preg_match( '/^[a-z_-]+$/', $option ) ) return; $option = str_replace('-', '_', $option); $map_option = $option; $type = str_replace('edit_', '', $map_option); $type = str_replace('_per_page', '', $type); if ( in_array($type, get_post_types()) ) $map_option = 'edit_per_page'; if ( in_array( $type, get_taxonomies()) ) $map_option = 'edit_tags_per_page'; switch ( $map_option ) { case 'edit_per_page': case 'users_per_page': case 'edit_comments_per_page': case 'upload_per_page': case 'edit_tags_per_page': case 'plugins_per_page': // Network admin case 'sites_network_per_page': case 'users_network_per_page': case 'site_users_network_per_page': case 'plugins_network_per_page': case 'themes_network_per_page': case 'site_themes_network_per_page': $value = (int) $value; if ( $value < 1 || $value > 999 ) return; break; default: $value = apply_filters('set-screen-option', false, $option, $value); if ( false === $value ) return; break; } update_user_meta($user->ID, $option, $value); wp_redirect( remove_query_arg( array('pagenum', 'apage', 'paged'), wp_get_referer() ) ); exit; } } function wp_menu_unfold() { if ( isset($_GET['unfoldmenu']) ) { delete_user_setting('mfold'); wp_redirect( remove_query_arg( 'unfoldmenu', stripslashes($_SERVER['REQUEST_URI']) ) ); exit; } } /** * Check if rewrite rule for WordPress already exists in the IIS 7 configuration file * * @since 2.8.0 * * @return bool * @param string $filename The file path to the configuration file */ function iis7_rewrite_rule_exists($filename) { if ( ! file_exists($filename) ) return false; if ( ! class_exists('DOMDocument') ) return false; $doc = new DOMDocument(); if ( $doc->load($filename) === false ) return false; $xpath = new DOMXPath($doc); $rules = $xpath->query('/configuration/system.webServer/rewrite/rules/rule[starts-with(@name,\'wordpress\')]'); if ( $rules->length == 0 ) return false; else return true; } /** * Delete WordPress rewrite rule from web.config file if it exists there * * @since 2.8.0 * * @param string $filename Name of the configuration file * @return bool */ function iis7_delete_rewrite_rule($filename) { // If configuration file does not exist then rules also do not exist so there is nothing to delete if ( ! file_exists($filename) ) return true; if ( ! class_exists('DOMDocument') ) return false; $doc = new DOMDocument(); $doc->preserveWhiteSpace = false; if ( $doc -> load($filename) === false ) return false; $xpath = new DOMXPath($doc); $rules = $xpath->query('/configuration/system.webServer/rewrite/rules/rule[starts-with(@name,\'wordpress\')]'); if ( $rules->length > 0 ) { $child = $rules->item(0); $parent = $child->parentNode; $parent->removeChild($child); $doc->formatOutput = true; saveDomDocument($doc, $filename); } return true; } /** * Add WordPress rewrite rule to the IIS 7 configuration file. * * @since 2.8.0 * * @param string $filename The file path to the configuration file * @param string $rewrite_rule The XML fragment with URL Rewrite rule * @return bool */ function iis7_add_rewrite_rule($filename, $rewrite_rule) { if ( ! class_exists('DOMDocument') ) return false; // If configuration file does not exist then we create one. if ( ! file_exists($filename) ) { $fp = fopen( $filename, 'w'); fwrite($fp, ''); fclose($fp); } $doc = new DOMDocument(); $doc->preserveWhiteSpace = false; if ( $doc->load($filename) === false ) return false; $xpath = new DOMXPath($doc); // First check if the rule already exists as in that case there is no need to re-add it $wordpress_rules = $xpath->query('/configuration/system.webServer/rewrite/rules/rule[starts-with(@name,\'wordpress\')]'); if ( $wordpress_rules->length > 0 ) return true; // Check the XPath to the rewrite rule and create XML nodes if they do not exist $xmlnodes = $xpath->query('/configuration/system.webServer/rewrite/rules'); if ( $xmlnodes->length > 0 ) { $rules_node = $xmlnodes->item(0); } else { $rules_node = $doc->createElement('rules'); $xmlnodes = $xpath->query('/configuration/system.webServer/rewrite'); if ( $xmlnodes->length > 0 ) { $rewrite_node = $xmlnodes->item(0); $rewrite_node->appendChild($rules_node); } else { $rewrite_node = $doc->createElement('rewrite'); $rewrite_node->appendChild($rules_node); $xmlnodes = $xpath->query('/configuration/system.webServer'); if ( $xmlnodes->length > 0 ) { $system_webServer_node = $xmlnodes->item(0); $system_webServer_node->appendChild($rewrite_node); } else { $system_webServer_node = $doc->createElement('system.webServer'); $system_webServer_node->appendChild($rewrite_node); $xmlnodes = $xpath->query('/configuration'); if ( $xmlnodes->length > 0 ) { $config_node = $xmlnodes->item(0); $config_node->appendChild($system_webServer_node); } else { $config_node = $doc->createElement('configuration'); $doc->appendChild($config_node); $config_node->appendChild($system_webServer_node); } } } } $rule_fragment = $doc->createDocumentFragment(); $rule_fragment->appendXML($rewrite_rule); $rules_node->appendChild($rule_fragment); $doc->encoding = "UTF-8"; $doc->formatOutput = true; saveDomDocument($doc, $filename); return true; } /** * Saves the XML document into a file * * @since 2.8.0 * * @param DOMDocument $doc * @param string $filename */ function saveDomDocument($doc, $filename) { $config = $doc->saveXML(); $config = preg_replace("/([^\r])\n/", "$1\r\n", $config); $fp = fopen($filename, 'w'); fwrite($fp, $config); fclose($fp); } /** * Workaround for Windows bug in is_writable() function * * @since 2.8.0 * * @param string $path * @return bool */ function win_is_writable( $path ) { /* will work in despite of Windows ACLs bug * NOTE: use a trailing slash for folders!!! * see http://bugs.php.net/bug.php?id=27609 * see http://bugs.php.net/bug.php?id=30931 */ if ( $path[strlen( $path ) - 1] == '/' ) // recursively return a temporary file path return win_is_writable( $path . uniqid( mt_rand() ) . '.tmp'); else if ( is_dir( $path ) ) return win_is_writable( $path . '/' . uniqid( mt_rand() ) . '.tmp' ); // check tmp file for read/write capabilities $should_delete_tmp_file = !file_exists( $path ); $f = @fopen( $path, 'a' ); if ( $f === false ) return false; fclose( $f ); if ( $should_delete_tmp_file ) unlink( $path ); return true; } /** * Display the default admin color scheme picker (Used in user-edit.php) * * @since 3.0.0 */ function admin_color_scheme_picker() { global $_wp_admin_css_colors, $user_id; ?>
$color_info ): ?>
/> colors as $html_color ): ?>
 
wp-admin/includes/ms.php0000644002347300047320000006510211656660355015077 0ustar vonfabpsacln ( 1024 * get_site_option( 'fileupload_maxk', 1500 ) ) ) $file['error'] = sprintf(__('This file is too big. Files must be less than %1$s KB in size.'), get_site_option( 'fileupload_maxk', 1500 ) ); if ( upload_is_user_over_quota( false ) ) { $file['error'] = __( 'You have used your space quota. Please delete files before uploading.' ); } if ( $file['error'] != '0' && !isset($_POST['html-upload']) ) wp_die( $file['error'] . ' ' . __( 'Back' ) . '' ); return $file; } add_filter( 'wp_handle_upload_prefilter', 'check_upload_size' ); /** * Delete a blog * * @since 3.0.0 * * @param int $blog_id Blog ID * @param bool $drop True if blog's table should be dropped. Default is false. * @return void */ function wpmu_delete_blog( $blog_id, $drop = false ) { global $wpdb; $switch = false; if ( $blog_id != $wpdb->blogid ) { $switch = true; switch_to_blog( $blog_id ); } $blog_prefix = $wpdb->get_blog_prefix( $blog_id ); do_action( 'delete_blog', $blog_id, $drop ); $users = get_users( array( 'blog_id' => $blog_id, 'fields' => 'ids' ) ); // Remove users from this blog. if ( ! empty( $users ) ) { foreach ( $users as $user_id ) { remove_user_from_blog( $user_id, $blog_id) ; } } update_blog_status( $blog_id, 'deleted', 1 ); if ( $drop ) { if ( substr( $blog_prefix, -1 ) == '_' ) $blog_prefix = substr( $blog_prefix, 0, -1 ) . '\_'; $drop_tables = $wpdb->get_results( "SHOW TABLES LIKE '{$blog_prefix}%'", ARRAY_A ); $drop_tables = apply_filters( 'wpmu_drop_tables', $drop_tables ); reset( $drop_tables ); foreach ( (array) $drop_tables as $drop_table) { $wpdb->query( "DROP TABLE IF EXISTS ". current( $drop_table ) ."" ); } $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->blogs WHERE blog_id = %d", $blog_id ) ); $dir = apply_filters( 'wpmu_delete_blog_upload_dir', WP_CONTENT_DIR . "/blogs.dir/{$blog_id}/files/", $blog_id ); $dir = rtrim( $dir, DIRECTORY_SEPARATOR ); $top_dir = $dir; $stack = array($dir); $index = 0; while ( $index < count( $stack ) ) { # Get indexed directory from stack $dir = $stack[$index]; $dh = @opendir( $dir ); if ( $dh ) { while ( ( $file = @readdir( $dh ) ) !== false ) { if ( $file == '.' || $file == '..' ) continue; if ( @is_dir( $dir . DIRECTORY_SEPARATOR . $file ) ) $stack[] = $dir . DIRECTORY_SEPARATOR . $file; else if ( @is_file( $dir . DIRECTORY_SEPARATOR . $file ) ) @unlink( $dir . DIRECTORY_SEPARATOR . $file ); } } $index++; } $stack = array_reverse( $stack ); // Last added dirs are deepest foreach( (array) $stack as $dir ) { if ( $dir != $top_dir) @rmdir( $dir ); } } $wpdb->query( "DELETE FROM {$wpdb->usermeta} WHERE meta_key = '{$blog_prefix}autosave_draft_ids'" ); $blogs = get_site_option( 'blog_list' ); if ( is_array( $blogs ) ) { foreach ( $blogs as $n => $blog ) { if ( $blog['blog_id'] == $blog_id ) unset( $blogs[$n] ); } update_site_option( 'blog_list', $blogs ); } if ( $switch === true ) restore_current_blog(); } // @todo Merge with wp_delete_user() ? function wpmu_delete_user( $id ) { global $wpdb; $id = (int) $id; do_action( 'wpmu_delete_user', $id ); $blogs = get_blogs_of_user( $id ); if ( ! empty( $blogs ) ) { foreach ( $blogs as $blog ) { switch_to_blog( $blog->userblog_id ); remove_user_from_blog( $id, $blog->userblog_id ); $post_ids = $wpdb->get_col( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_author = %d", $id ) ); foreach ( (array) $post_ids as $post_id ) { wp_delete_post( $post_id ); } // Clean links $link_ids = $wpdb->get_col( $wpdb->prepare( "SELECT link_id FROM $wpdb->links WHERE link_owner = %d", $id ) ); if ( $link_ids ) { foreach ( $link_ids as $link_id ) wp_delete_link( $link_id ); } restore_current_blog(); } } $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->users WHERE ID = %d", $id ) ); $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->usermeta WHERE user_id = %d", $id ) ); clean_user_cache( $id ); // allow for commit transaction do_action( 'deleted_user', $id ); return true; } function wpmu_get_blog_allowedthemes( $blog_id = 0 ) { $themes = get_themes(); if ( $blog_id != 0 ) switch_to_blog( $blog_id ); $blog_allowed_themes = get_option( 'allowedthemes' ); if ( !is_array( $blog_allowed_themes ) || empty( $blog_allowed_themes ) ) { // convert old allowed_themes to new allowedthemes $blog_allowed_themes = get_option( 'allowed_themes' ); if ( is_array( $blog_allowed_themes ) ) { foreach( (array) $themes as $key => $theme ) { $theme_key = esc_html( $theme['Stylesheet'] ); if ( isset( $blog_allowed_themes[$key] ) == true ) { $blog_allowedthemes[$theme_key] = 1; } } $blog_allowed_themes = $blog_allowedthemes; add_option( 'allowedthemes', $blog_allowed_themes ); delete_option( 'allowed_themes' ); } } if ( $blog_id != 0 ) restore_current_blog(); return $blog_allowed_themes; } function update_option_new_admin_email( $old_value, $value ) { $email = get_option( 'admin_email' ); if ( $value == get_option( 'admin_email' ) || !is_email( $value ) ) return; $hash = md5( $value. time() .mt_rand() ); $new_admin_email = array( 'hash' => $hash, 'newemail' => $value ); update_option( 'adminhash', $new_admin_email ); $content = apply_filters( 'new_admin_email_content', __( "Dear user, You recently requested to have the administration email address on your site changed. If this is correct, please click on the following link to change it: ###ADMIN_URL### You can safely ignore and delete this email if you do not want to take this action. This email has been sent to ###EMAIL### Regards, All at ###SITENAME### ###SITEURL### "), $new_admin_email ); $content = str_replace( '###ADMIN_URL###', esc_url( admin_url( 'options.php?adminhash='.$hash ) ), $content ); $content = str_replace( '###EMAIL###', $value, $content ); $content = str_replace( '###SITENAME###', get_site_option( 'site_name' ), $content ); $content = str_replace( '###SITEURL###', network_home_url(), $content ); wp_mail( $value, sprintf( __( '[%s] New Admin Email Address' ), get_option( 'blogname' ) ), $content ); } add_action( 'update_option_new_admin_email', 'update_option_new_admin_email', 10, 2 ); add_action( 'add_option_new_admin_email', 'update_option_new_admin_email', 10, 2 ); function send_confirmation_on_profile_email() { global $errors, $wpdb; $current_user = wp_get_current_user(); if ( ! is_object($errors) ) $errors = new WP_Error(); if ( $current_user->id != $_POST['user_id'] ) return false; if ( $current_user->user_email != $_POST['email'] ) { if ( !is_email( $_POST['email'] ) ) { $errors->add( 'user_email', __( "ERROR: The e-mail address isn't correct." ), array( 'form-field' => 'email' ) ); return; } if ( $wpdb->get_var( $wpdb->prepare( "SELECT user_email FROM {$wpdb->users} WHERE user_email=%s", $_POST['email'] ) ) ) { $errors->add( 'user_email', __( "ERROR: The e-mail address is already used." ), array( 'form-field' => 'email' ) ); delete_option( $current_user->ID . '_new_email' ); return; } $hash = md5( $_POST['email'] . time() . mt_rand() ); $new_user_email = array( 'hash' => $hash, 'newemail' => $_POST['email'] ); update_option( $current_user->ID . '_new_email', $new_user_email ); $content = apply_filters( 'new_user_email_content', __( "Dear user, You recently requested to have the email address on your account changed. If this is correct, please click on the following link to change it: ###ADMIN_URL### You can safely ignore and delete this email if you do not want to take this action. This email has been sent to ###EMAIL### Regards, All at ###SITENAME### ###SITEURL###" ), $new_user_email ); $content = str_replace( '###ADMIN_URL###', esc_url( admin_url( 'profile.php?newuseremail='.$hash ) ), $content ); $content = str_replace( '###EMAIL###', $_POST['email'], $content); $content = str_replace( '###SITENAME###', get_site_option( 'site_name' ), $content ); $content = str_replace( '###SITEURL###', network_home_url(), $content ); wp_mail( $_POST['email'], sprintf( __( '[%s] New Email Address' ), get_option( 'blogname' ) ), $content ); $_POST['email'] = $current_user->user_email; } } add_action( 'personal_options_update', 'send_confirmation_on_profile_email' ); function new_user_email_admin_notice() { if ( strpos( $_SERVER['PHP_SELF'], 'profile.php' ) && isset( $_GET['updated'] ) && $email = get_option( get_current_user_id() . '_new_email' ) ) echo "
" . sprintf( __( "Your email address has not been updated yet. Please check your inbox at %s for a confirmation email." ), $email['newemail'] ) . "
"; } add_action( 'admin_notices', 'new_user_email_admin_notice' ); function get_site_allowed_themes() { $themes = get_themes(); $allowed_themes = get_site_option( 'allowedthemes' ); if ( !is_array( $allowed_themes ) || empty( $allowed_themes ) ) { $allowed_themes = get_site_option( 'allowed_themes' ); // convert old allowed_themes format if ( !is_array( $allowed_themes ) ) { $allowed_themes = array(); } else { foreach( (array) $themes as $key => $theme ) { $theme_key = esc_html( $theme['Stylesheet'] ); if ( isset( $allowed_themes[ $key ] ) == true ) { $allowedthemes[ $theme_key ] = 1; } } $allowed_themes = $allowedthemes; } } return $allowed_themes; } /** * Determines if there is any upload space left in the current blog's quota. * * @since 3.0.0 * @return bool True if space is available, false otherwise. */ function is_upload_space_available() { if ( get_site_option( 'upload_space_check_disabled' ) ) return true; if ( !( $space_allowed = get_upload_space_available() ) ) return false; return true; } /** * @since 3.0.0 * * @return int of upload size limit in bytes */ function upload_size_limit_filter( $size ) { $fileupload_maxk = 1024 * get_site_option( 'fileupload_maxk', 1500 ); if ( get_site_option( 'upload_space_check_disabled' ) ) return min( $size, $fileupload_maxk ); return min( $size, $fileupload_maxk, get_upload_space_available() ); } /** * Determines if there is any upload space left in the current blog's quota. * * @return int of upload space available in bytes */ function get_upload_space_available() { $space_allowed = get_space_allowed() * 1024 * 1024; if ( get_site_option( 'upload_space_check_disabled' ) ) return $space_allowed; $dir_name = trailingslashit( BLOGUPLOADDIR ); if ( !( is_dir( $dir_name) && is_readable( $dir_name ) ) ) return $space_allowed; $dir = dir( $dir_name ); $size = 0; while ( $file = $dir->read() ) { if ( $file != '.' && $file != '..' ) { if ( is_dir( $dir_name . $file) ) { $size += get_dirsize( $dir_name . $file ); } else { $size += filesize( $dir_name . $file ); } } } $dir->close(); if ( ( $space_allowed - $size ) <= 0 ) return 0; return $space_allowed - $size; } /** * Returns the upload quota for the current blog. * * @return int Quota */ function get_space_allowed() { $space_allowed = get_option( 'blog_upload_space' ); if ( $space_allowed == false ) $space_allowed = get_site_option( 'blog_upload_space' ); if ( empty( $space_allowed ) || !is_numeric( $space_allowed ) ) $space_allowed = 50; return $space_allowed; } function display_space_usage() { $space = get_space_allowed(); $used = get_dirsize( BLOGUPLOADDIR ) / 1024 / 1024; $percentused = ( $used / $space ) * 100; if ( $space > 1000 ) { $space = number_format( $space / 1024 ); /* translators: Gigabytes */ $space .= __( 'GB' ); } else { /* translators: Megabytes */ $space .= __( 'MB' ); } ?> update( $wpdb->users, array( $pref => $value ), array( 'ID' => $id ) ); clean_user_cache( $id ); if ( $pref == 'spam' ) { if ( $value == 1 ) do_action( 'make_spam_user', $id ); else do_action( 'make_ham_user', $id ); } return $value; } function refresh_user_details( $id ) { $id = (int) $id; if ( !$user = get_userdata( $id ) ) return false; clean_user_cache( $id ); return $id; } function format_code_lang( $code = '' ) { $code = strtolower( substr( $code, 0, 2 ) ); $lang_codes = array( 'aa' => 'Afar', 'ab' => 'Abkhazian', 'af' => 'Afrikaans', 'ak' => 'Akan', 'sq' => 'Albanian', 'am' => 'Amharic', 'ar' => 'Arabic', 'an' => 'Aragonese', 'hy' => 'Armenian', 'as' => 'Assamese', 'av' => 'Avaric', 'ae' => 'Avestan', 'ay' => 'Aymara', 'az' => 'Azerbaijani', 'ba' => 'Bashkir', 'bm' => 'Bambara', 'eu' => 'Basque', 'be' => 'Belarusian', 'bn' => 'Bengali', 'bh' => 'Bihari', 'bi' => 'Bislama', 'bs' => 'Bosnian', 'br' => 'Breton', 'bg' => 'Bulgarian', 'my' => 'Burmese', 'ca' => 'Catalan; Valencian', 'ch' => 'Chamorro', 'ce' => 'Chechen', 'zh' => 'Chinese', 'cu' => 'Church Slavic; Old Slavonic; Church Slavonic; Old Bulgarian; Old Church Slavonic', 'cv' => 'Chuvash', 'kw' => 'Cornish', 'co' => 'Corsican', 'cr' => 'Cree', 'cs' => 'Czech', 'da' => 'Danish', 'dv' => 'Divehi; Dhivehi; Maldivian', 'nl' => 'Dutch; Flemish', 'dz' => 'Dzongkha', 'en' => 'English', 'eo' => 'Esperanto', 'et' => 'Estonian', 'ee' => 'Ewe', 'fo' => 'Faroese', 'fj' => 'Fijjian', 'fi' => 'Finnish', 'fr' => 'French', 'fy' => 'Western Frisian', 'ff' => 'Fulah', 'ka' => 'Georgian', 'de' => 'German', 'gd' => 'Gaelic; Scottish Gaelic', 'ga' => 'Irish', 'gl' => 'Galician', 'gv' => 'Manx', 'el' => 'Greek, Modern', 'gn' => 'Guarani', 'gu' => 'Gujarati', 'ht' => 'Haitian; Haitian Creole', 'ha' => 'Hausa', 'he' => 'Hebrew', 'hz' => 'Herero', 'hi' => 'Hindi', 'ho' => 'Hiri Motu', 'hu' => 'Hungarian', 'ig' => 'Igbo', 'is' => 'Icelandic', 'io' => 'Ido', 'ii' => 'Sichuan Yi', 'iu' => 'Inuktitut', 'ie' => 'Interlingue', 'ia' => 'Interlingua (International Auxiliary Language Association)', 'id' => 'Indonesian', 'ik' => 'Inupiaq', 'it' => 'Italian', 'jv' => 'Javanese', 'ja' => 'Japanese', 'kl' => 'Kalaallisut; Greenlandic', 'kn' => 'Kannada', 'ks' => 'Kashmiri', 'kr' => 'Kanuri', 'kk' => 'Kazakh', 'km' => 'Central Khmer', 'ki' => 'Kikuyu; Gikuyu', 'rw' => 'Kinyarwanda', 'ky' => 'Kirghiz; Kyrgyz', 'kv' => 'Komi', 'kg' => 'Kongo', 'ko' => 'Korean', 'kj' => 'Kuanyama; Kwanyama', 'ku' => 'Kurdish', 'lo' => 'Lao', 'la' => 'Latin', 'lv' => 'Latvian', 'li' => 'Limburgan; Limburger; Limburgish', 'ln' => 'Lingala', 'lt' => 'Lithuanian', 'lb' => 'Luxembourgish; Letzeburgesch', 'lu' => 'Luba-Katanga', 'lg' => 'Ganda', 'mk' => 'Macedonian', 'mh' => 'Marshallese', 'ml' => 'Malayalam', 'mi' => 'Maori', 'mr' => 'Marathi', 'ms' => 'Malay', 'mg' => 'Malagasy', 'mt' => 'Maltese', 'mo' => 'Moldavian', 'mn' => 'Mongolian', 'na' => 'Nauru', 'nv' => 'Navajo; Navaho', 'nr' => 'Ndebele, South; South Ndebele', 'nd' => 'Ndebele, North; North Ndebele', 'ng' => 'Ndonga', 'ne' => 'Nepali', 'nn' => 'Norwegian Nynorsk; Nynorsk, Norwegian', 'nb' => 'Bokmål, Norwegian, Norwegian Bokmål', 'no' => 'Norwegian', 'ny' => 'Chichewa; Chewa; Nyanja', 'oc' => 'Occitan, Provençal', 'oj' => 'Ojibwa', 'or' => 'Oriya', 'om' => 'Oromo', 'os' => 'Ossetian; Ossetic', 'pa' => 'Panjabi; Punjabi', 'fa' => 'Persian', 'pi' => 'Pali', 'pl' => 'Polish', 'pt' => 'Portuguese', 'ps' => 'Pushto', 'qu' => 'Quechua', 'rm' => 'Romansh', 'ro' => 'Romanian', 'rn' => 'Rundi', 'ru' => 'Russian', 'sg' => 'Sango', 'sa' => 'Sanskrit', 'sr' => 'Serbian', 'hr' => 'Croatian', 'si' => 'Sinhala; Sinhalese', 'sk' => 'Slovak', 'sl' => 'Slovenian', 'se' => 'Northern Sami', 'sm' => 'Samoan', 'sn' => 'Shona', 'sd' => 'Sindhi', 'so' => 'Somali', 'st' => 'Sotho, Southern', 'es' => 'Spanish; Castilian', 'sc' => 'Sardinian', 'ss' => 'Swati', 'su' => 'Sundanese', 'sw' => 'Swahili', 'sv' => 'Swedish', 'ty' => 'Tahitian', 'ta' => 'Tamil', 'tt' => 'Tatar', 'te' => 'Telugu', 'tg' => 'Tajik', 'tl' => 'Tagalog', 'th' => 'Thai', 'bo' => 'Tibetan', 'ti' => 'Tigrinya', 'to' => 'Tonga (Tonga Islands)', 'tn' => 'Tswana', 'ts' => 'Tsonga', 'tk' => 'Turkmen', 'tr' => 'Turkish', 'tw' => 'Twi', 'ug' => 'Uighur; Uyghur', 'uk' => 'Ukrainian', 'ur' => 'Urdu', 'uz' => 'Uzbek', 've' => 'Venda', 'vi' => 'Vietnamese', 'vo' => 'Volapük', 'cy' => 'Welsh','wa' => 'Walloon','wo' => 'Wolof', 'xh' => 'Xhosa', 'yi' => 'Yiddish', 'yo' => 'Yoruba', 'za' => 'Zhuang; Chuang', 'zu' => 'Zulu' ); $lang_codes = apply_filters( 'lang_codes', $lang_codes, $code ); return strtr( $code, $lang_codes ); } function sync_category_tag_slugs( $term, $taxonomy ) { if ( global_terms_enabled() && ( $taxonomy == 'category' || $taxonomy == 'post_tag' ) ) { if ( is_object( $term ) ) { $term->slug = sanitize_title( $term->name ); } else { $term['slug'] = sanitize_title( $term['name'] ); } } return $term; } add_filter( 'get_term', 'sync_category_tag_slugs', 10, 2 ); function redirect_user_to_blog() { $c = 0; if ( isset( $_GET['c'] ) ) $c = (int) $_GET['c']; if ( $c >= 5 ) { wp_die( __( "You don’t have permission to view this site. Please contact the system administrator." ) ); } $c ++; $blog = get_active_blog_for_user( get_current_user_id() ); if ( is_object( $blog ) ) { wp_redirect( get_admin_url( $blog->blog_id, '?c=' . $c ) ); // redirect and count to 5, "just in case" } else { wp_redirect( user_admin_url( '?c=' . $c ) ); // redirect and count to 5, "just in case" } exit; } add_action( 'admin_page_access_denied', 'redirect_user_to_blog', 99 ); function check_import_new_users( $permission ) { if ( !is_super_admin() ) return false; return true; } add_filter( 'import_allow_create_users', 'check_import_new_users' ); // See "import_allow_fetch_attachments" and "import_attachment_size_limit" filters too. function mu_dropdown_languages( $lang_files = array(), $current = '' ) { $flag = false; $output = array(); foreach ( (array) $lang_files as $val ) { $code_lang = basename( $val, '.mo' ); if ( $code_lang == 'en_US' ) { // American English $flag = true; $ae = __( 'American English' ); $output[$ae] = ''; } elseif ( $code_lang == 'en_GB' ) { // British English $flag = true; $be = __( 'British English' ); $output[$be] = ''; } else { $translated = format_code_lang( $code_lang ); $output[$translated] = ''; } } if ( $flag === false ) // WordPress english $output[] = '"; // Order by name uksort( $output, 'strnatcasecmp' ); $output = apply_filters( 'mu_dropdown_languages', $output, $lang_files, $current ); echo implode( "\n\t", $output ); } /* Warn the admin if SECRET SALT information is missing from wp-config.php */ function secret_salt_warning() { if ( !is_super_admin() ) return; $secret_keys = array( 'AUTH_KEY', 'SECURE_AUTH_KEY', 'LOGGED_IN_KEY', 'NONCE_KEY', 'AUTH_SALT', 'SECURE_AUTH_SALT', 'LOGGED_IN_SALT', 'NONCE_SALT' ); $out = ''; foreach( $secret_keys as $key ) { if ( ! defined( $key ) ) $out .= "define( '$key', '" . esc_html( wp_generate_password( 64, true, true ) ) . "' );
"; } if ( $out != '' ) { $msg = __( 'Warning! WordPress encrypts user cookies, but you must add the following lines to wp-config.php for it to be more secure.' ); $msg .= '
' . __( "Before the line /* That's all, stop editing! Happy blogging. */ please add this code:" ); $msg .= "

$out"; echo "
$msg
"; } } add_action( 'network_admin_notices', 'secret_salt_warning' ); function site_admin_notice() { global $wp_db_version; if ( !is_super_admin() ) return false; if ( get_site_option( 'wpmu_upgrade_site' ) != $wp_db_version ) echo "
" . sprintf( __( 'Thank you for Updating! Please visit the Update Network page to update all your sites.' ), esc_url( network_admin_url( 'upgrade.php' ) ) ) . "
"; } add_action( 'admin_notices', 'site_admin_notice' ); add_action( 'network_admin_notices', 'site_admin_notice' ); function avoid_blog_page_permalink_collision( $data, $postarr ) { if ( is_subdomain_install() ) return $data; if ( $data['post_type'] != 'page' ) return $data; if ( !isset( $data['post_name'] ) || $data['post_name'] == '' ) return $data; if ( !is_main_site() ) return $data; $post_name = $data['post_name']; $c = 0; while( $c < 10 && get_id_from_blogname( $post_name ) ) { $post_name .= mt_rand( 1, 10 ); $c ++; } if ( $post_name != $data['post_name'] ) { $data['post_name'] = $post_name; } return $data; } add_filter( 'wp_insert_post_data', 'avoid_blog_page_permalink_collision', 10, 2 ); function choose_primary_blog() { ?>
1 ) { $found = false; ?> userblog_id ); } } elseif ( count( $all_blogs ) == 1 ) { $blog = array_shift( $all_blogs ); echo $blog->domain; if ( $primary_blog != $blog->userblog_id ) // Set the primary blog again if it's out of sync with blog list. update_user_meta( get_current_user_id(), 'primary_blog', $blog->userblog_id ); } else { echo "N/A"; } ?>
' . sprintf( __( 'The %1$s file is deprecated. Please remove it and update your server rewrite rules to use %2$s instead.' ), 'wp-content/blogs.php', 'wp-includes/ms-files.php' ) . ''; } add_action( 'network_admin_notices', 'ms_deprecated_blogs_file' ); /** * Grants super admin privileges. * * @since 3.0.0 * @param int $user_id */ function grant_super_admin( $user_id ) { global $super_admins; // If global super_admins override is defined, there is nothing to do here. if ( isset($super_admins) ) return false; do_action( 'grant_super_admin', $user_id ); // Directly fetch site_admins instead of using get_super_admins() $super_admins = get_site_option( 'site_admins', array( 'admin' ) ); $user = new WP_User( $user_id ); if ( ! in_array( $user->user_login, $super_admins ) ) { $super_admins[] = $user->user_login; update_site_option( 'site_admins' , $super_admins ); do_action( 'granted_super_admin', $user_id ); return true; } return false; } /** * Revokes super admin privileges. * * @since 3.0.0 * @param int $user_id */ function revoke_super_admin( $user_id ) { global $super_admins; // If global super_admins override is defined, there is nothing to do here. if ( isset($super_admins) ) return false; do_action( 'revoke_super_admin', $user_id ); // Directly fetch site_admins instead of using get_super_admins() $super_admins = get_site_option( 'site_admins', array( 'admin' ) ); $user = new WP_User( $user_id ); if ( $user->user_email != get_site_option( 'admin_email' ) ) { if ( false !== ( $key = array_search( $user->user_login, $super_admins ) ) ) { unset( $super_admins[$key] ); update_site_option( 'site_admins', $super_admins ); do_action( 'revoked_super_admin', $user_id ); return true; } } return false; } /** * Whether or not we can edit this network from this page * * By default editing of network is restricted to the Network Admin for that site_id this allows for this to be overridden * * @since 3.1.0 * @param integer $site_id The network/site id to check. */ function can_edit_network( $site_id ) { global $wpdb; if ($site_id == $wpdb->siteid ) $result = true; else $result = false; return apply_filters( 'can_edit_network', $result, $site_id ); } /** * Thickbox image paths for Network Admin. * * @since 3.1.0 * @access private */ function _thickbox_path_admin_subfolder() { ?> wp-admin/includes/nav-menu.php0000644002347300047320000013065711656660355016216 0ustar vonfabpsacln $_wp_nav_menu_max_depth ? $depth : $_wp_nav_menu_max_depth; $indent = ( $depth ) ? str_repeat( "\t", $depth ) : ''; ob_start(); $item_id = esc_attr( $item->ID ); $removed_args = array( 'action', 'customlink-tab', 'edit-menu-item', 'menu-item', 'page-tab', '_wpnonce', ); $original_title = ''; if ( 'taxonomy' == $item->type ) { $original_title = get_term_field( 'name', $item->object_id, $item->object, 'raw' ); } elseif ( 'post_type' == $item->type ) { $original_object = get_post( $item->object_id ); $original_title = $original_object->post_title; } $classes = array( 'menu-item menu-item-depth-' . $depth, 'menu-item-' . esc_attr( $item->object ), 'menu-item-edit-' . ( ( isset( $_GET['edit-menu-item'] ) && $item_id == $_GET['edit-menu-item'] ) ? 'active' : 'inactive'), ); $title = $item->title; if ( isset( $item->post_status ) && 'draft' == $item->post_status ) { $classes[] = 'pending'; /* translators: %s: title of menu item in draft status */ $title = sprintf( __('%s (Pending)'), $item->title ); } $title = empty( $item->label ) ? $title : $item->label; ?>
  • '; $output .= ''; // Menu item hidden fields $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; $output .= ''; } } /** * Prints the appropriate response to a menu quick search. * * @since 3.0.0 * * @param array $request The unsanitized request values. */ function _wp_ajax_menu_quick_search( $request = array() ) { $args = array(); $type = isset( $request['type'] ) ? $request['type'] : ''; $object_type = isset( $request['object_type'] ) ? $request['object_type'] : ''; $query = isset( $request['q'] ) ? $request['q'] : ''; $response_format = isset( $request['response-format'] ) && in_array( $request['response-format'], array( 'json', 'markup' ) ) ? $request['response-format'] : 'json'; if ( 'markup' == $response_format ) { $args['walker'] = new Walker_Nav_Menu_Checklist; } if ( 'get-post-item' == $type ) { if ( post_type_exists( $object_type ) ) { if ( isset( $request['ID'] ) ) { $object_id = (int) $request['ID']; if ( 'markup' == $response_format ) { echo walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', array( get_post( $object_id ) ) ), 0, (object) $args ); } elseif ( 'json' == $response_format ) { $post_obj = get_post( $object_id ); echo json_encode( array( 'ID' => $object_id, 'post_title' => get_the_title( $object_id ), 'post_type' => get_post_type( $object_id ), ) ); echo "\n"; } } } elseif ( taxonomy_exists( $object_type ) ) { if ( isset( $request['ID'] ) ) { $object_id = (int) $request['ID']; if ( 'markup' == $response_format ) { echo walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', array( get_term( $object_id, $object_type ) ) ), 0, (object) $args ); } elseif ( 'json' == $response_format ) { $post_obj = get_term( $object_id, $object_type ); echo json_encode( array( 'ID' => $object_id, 'post_title' => $post_obj->name, 'post_type' => $object_type, ) ); echo "\n"; } } } } elseif ( preg_match('/quick-search-(posttype|taxonomy)-([a-zA-Z_-]*\b)/', $type, $matches) ) { if ( 'posttype' == $matches[1] && get_post_type_object( $matches[2] ) ) { query_posts(array( 'posts_per_page' => 10, 'post_type' => $matches[2], 's' => $query, )); if ( ! have_posts() ) return; while ( have_posts() ) { the_post(); if ( 'markup' == $response_format ) { echo walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', array( get_post( $var_by_ref = get_the_ID() ) ) ), 0, (object) $args ); } elseif ( 'json' == $response_format ) { echo json_encode( array( 'ID' => get_the_ID(), 'post_title' => get_the_title(), 'post_type' => get_post_type(), ) ); echo "\n"; } } } elseif ( 'taxonomy' == $matches[1] ) { $terms = get_terms( $matches[2], array( 'name__like' => $query, 'number' => 10, )); if ( empty( $terms ) || is_wp_error( $terms ) ) return; foreach( (array) $terms as $term ) { if ( 'markup' == $response_format ) { echo walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', array( $term ) ), 0, (object) $args ); } elseif ( 'json' == $response_format ) { echo json_encode( array( 'ID' => $term->term_id, 'post_title' => $term->name, 'post_type' => $matches[2], ) ); echo "\n"; } } } } } /** * Register nav menu metaboxes and advanced menu items * * @since 3.0.0 **/ function wp_nav_menu_setup() { // Register meta boxes if ( wp_get_nav_menus() ) add_meta_box( 'nav-menu-theme-locations', __( 'Theme Locations' ), 'wp_nav_menu_locations_meta_box' , 'nav-menus', 'side', 'default' ); add_meta_box( 'add-custom-links', __('Custom Links'), 'wp_nav_menu_item_link_meta_box', 'nav-menus', 'side', 'default' ); wp_nav_menu_post_type_meta_boxes(); wp_nav_menu_taxonomy_meta_boxes(); // Register advanced menu items (columns) add_filter( 'manage_nav-menus_columns', 'wp_nav_menu_manage_columns'); // If first time editing, disable advanced items by default. if( false === get_user_option( 'managenav-menuscolumnshidden' ) ) { $user = wp_get_current_user(); update_user_option($user->ID, 'managenav-menuscolumnshidden', array( 0 => 'link-target', 1 => 'css-classes', 2 => 'xfn', 3 => 'description', ), true); } } /** * Limit the amount of meta boxes to just links, pages and cats for first time users. * * @since 3.0.0 **/ function wp_initial_nav_menu_meta_boxes() { global $wp_meta_boxes; if ( get_user_option( 'metaboxhidden_nav-menus' ) !== false || ! is_array($wp_meta_boxes) ) return; $initial_meta_boxes = array( 'nav-menu-theme-locations', 'add-custom-links', 'add-page', 'add-category' ); $hidden_meta_boxes = array(); foreach ( array_keys($wp_meta_boxes['nav-menus']) as $context ) { foreach ( array_keys($wp_meta_boxes['nav-menus'][$context]) as $priority ) { foreach ( $wp_meta_boxes['nav-menus'][$context][$priority] as $box ) { if ( in_array( $box['id'], $initial_meta_boxes ) ) { unset( $box['id'] ); } else { $hidden_meta_boxes[] = $box['id']; } } } } $user = wp_get_current_user(); update_user_option( $user->ID, 'metaboxhidden_nav-menus', $hidden_meta_boxes, true ); } /** * Creates metaboxes for any post type menu item. * * @since 3.0.0 */ function wp_nav_menu_post_type_meta_boxes() { $post_types = get_post_types( array( 'show_in_nav_menus' => true ), 'object' ); if ( ! $post_types ) return; foreach ( $post_types as $post_type ) { $post_type = apply_filters( 'nav_menu_meta_box_object', $post_type ); if ( $post_type ) { $id = $post_type->name; add_meta_box( "add-{$id}", $post_type->labels->name, 'wp_nav_menu_item_post_type_meta_box', 'nav-menus', 'side', 'default', $post_type ); } } } /** * Creates metaboxes for any taxonomy menu item. * * @since 3.0.0 */ function wp_nav_menu_taxonomy_meta_boxes() { $taxonomies = get_taxonomies( array( 'show_in_nav_menus' => true ), 'object' ); if ( !$taxonomies ) return; foreach ( $taxonomies as $tax ) { $tax = apply_filters( 'nav_menu_meta_box_object', $tax ); if ( $tax ) { $id = $tax->name; add_meta_box( "add-{$id}", $tax->labels->name, 'wp_nav_menu_item_taxonomy_meta_box', 'nav-menus', 'side', 'default', $tax ); } } } /** * Displays a metabox for the nav menu theme locations. * * @since 3.0.0 */ function wp_nav_menu_locations_meta_box() { global $nav_menu_selected_id; if ( ! current_theme_supports( 'menus' ) ) { // We must only support widgets. Leave a message and bail. echo '

    ' . __('The current theme does not natively support menus, but you can use the “Custom Menu” widget to add any menus you create here to the theme’s sidebar.') . '

    '; return; } $locations = get_registered_nav_menus(); $menus = wp_get_nav_menus(); $menu_locations = get_nav_menu_locations(); $num_locations = count( array_keys($locations) ); echo '

    ' . sprintf( _n('Your theme supports %s menu. Select which menu you would like to use.', 'Your theme supports %s menus. Select which menu appears in each location.', $num_locations ), number_format_i18n($num_locations) ) . '

    '; foreach ( $locations as $location => $description ) { ?>

    $_nav_menu_placeholder ? $_nav_menu_placeholder - 1 : -1; $current_tab = 'create'; if ( isset( $_REQUEST['customlink-tab'] ) && in_array( $_REQUEST['customlink-tab'], array('create', 'all') ) ) { $current_tab = $_REQUEST['customlink-tab']; } $removed_args = array( 'action', 'customlink-tab', 'edit-menu-item', 'menu-item', 'page-tab', '_wpnonce', ); ?>

    class="button-secondary submit-add-to-menu" value="" name="add-custom-menu-item" id="submit-customlinkdiv" />

    name; // paginate browsing for large numbers of post objects $per_page = 50; $pagenum = isset( $_REQUEST[$post_type_name . '-tab'] ) && isset( $_REQUEST['paged'] ) ? absint( $_REQUEST['paged'] ) : 1; $offset = 0 < $pagenum ? $per_page * ( $pagenum - 1 ) : 0; $args = array( 'offset' => $offset, 'order' => 'ASC', 'orderby' => 'title', 'posts_per_page' => $per_page, 'post_type' => $post_type_name, 'suppress_filters' => true, 'update_post_term_cache' => false, 'update_post_meta_cache' => false ); if ( isset( $post_type['args']->_default_query ) ) $args = array_merge($args, (array) $post_type['args']->_default_query ); // @todo transient caching of these results with proper invalidation on updating of a post of this type $get_posts = new WP_Query; $posts = $get_posts->query( $args ); if ( ! $get_posts->post_count ) { echo '

    ' . __( 'No items.' ) . '

    '; return; } $post_type_object = get_post_type_object($post_type_name); $num_pages = $get_posts->max_num_pages; $page_links = paginate_links( array( 'base' => add_query_arg( array( $post_type_name . '-tab' => 'all', 'paged' => '%#%', 'item-type' => 'post_type', 'item-object' => $post_type_name, ) ), 'format' => '', 'prev_text' => __('«'), 'next_text' => __('»'), 'total' => $num_pages, 'current' => $pagenum )); if ( !$posts ) $error = '
  • '. $post_type['args']->labels->not_found .'
  • '; $walker = new Walker_Nav_Menu_Checklist; $current_tab = 'most-recent'; if ( isset( $_REQUEST[$post_type_name . '-tab'] ) && in_array( $_REQUEST[$post_type_name . '-tab'], array('all', 'search') ) ) { $current_tab = $_REQUEST[$post_type_name . '-tab']; } if ( ! empty( $_REQUEST['quick-search-posttype-' . $post_type_name] ) ) { $current_tab = 'search'; } $removed_args = array( 'action', 'customlink-tab', 'edit-menu-item', 'menu-item', 'page-tab', '_wpnonce', ); ?>
    • >
    • >
    • >
      'post_date', 'order' => 'DESC', 'posts_per_page' => 15 ) ); $most_recent = $get_posts->query( $recent_args ); $args['walker'] = $walker; echo walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', $most_recent), 0, (object) $args ); ?>
      _add_to_top = true; $front_page_obj->label = sprintf( _x('Home: %s', 'nav menu front page title'), $front_page_obj->post_title ); array_unshift( $posts, $front_page_obj ); } else { $_nav_menu_placeholder = ( 0 > $_nav_menu_placeholder ) ? intval($_nav_menu_placeholder) - 1 : -1; array_unshift( $posts, (object) array( '_add_to_top' => true, 'ID' => 0, 'object_id' => $_nav_menu_placeholder, 'post_content' => '', 'post_excerpt' => '', 'post_title' => _x('Home', 'nav menu home label'), 'post_type' => 'nav_menu_item', 'type' => 'custom', 'url' => home_url('/'), ) ); } } $checkbox_items = walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', $posts), 0, (object) $args ); if ( 'all' == $current_tab && ! empty( $_REQUEST['selectall'] ) ) { $checkbox_items = preg_replace('/(type=(.)checkbox(\2))/', '$1 checked=$2checked$2', $checkbox_items); } echo $checkbox_items; ?>

    class="button-secondary submit-add-to-menu" value="" name="add-post-type-menu-item" id="submit-posttype-" />

    name; // paginate browsing for large numbers of objects $per_page = 50; $pagenum = isset( $_REQUEST[$taxonomy_name . '-tab'] ) && isset( $_REQUEST['paged'] ) ? absint( $_REQUEST['paged'] ) : 1; $offset = 0 < $pagenum ? $per_page * ( $pagenum - 1 ) : 0; $args = array( 'child_of' => 0, 'exclude' => '', 'hide_empty' => false, 'hierarchical' => 1, 'include' => '', 'include_last_update_time' => false, 'number' => $per_page, 'offset' => $offset, 'order' => 'ASC', 'orderby' => 'name', 'pad_counts' => false, ); $terms = get_terms( $taxonomy_name, $args ); if ( ! $terms || is_wp_error($terms) ) { echo '

    ' . __( 'No items.' ) . '

    '; return; } $num_pages = ceil( wp_count_terms( $taxonomy_name , array_merge( $args, array('number' => '', 'offset' => '') ) ) / $per_page ); $page_links = paginate_links( array( 'base' => add_query_arg( array( $taxonomy_name . '-tab' => 'all', 'paged' => '%#%', 'item-type' => 'taxonomy', 'item-object' => $taxonomy_name, ) ), 'format' => '', 'prev_text' => __('«'), 'next_text' => __('»'), 'total' => $num_pages, 'current' => $pagenum )); $walker = new Walker_Nav_Menu_Checklist; $current_tab = 'most-used'; if ( isset( $_REQUEST[$taxonomy_name . '-tab'] ) && in_array( $_REQUEST[$taxonomy_name . '-tab'], array('all', 'most-used', 'search') ) ) { $current_tab = $_REQUEST[$taxonomy_name . '-tab']; } if ( ! empty( $_REQUEST['quick-search-taxonomy-' . $taxonomy_name] ) ) { $current_tab = 'search'; } $removed_args = array( 'action', 'customlink-tab', 'edit-menu-item', 'menu-item', 'page-tab', '_wpnonce', ); ?>
    • >
    • >
    • >
      'count', 'order' => 'DESC', 'number' => 10, 'hierarchical' => false ) ); $args['walker'] = $walker; echo walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', $popular_terms), 0, (object) $args ); ?>
    $searched, 'fields' => 'all', 'orderby' => 'count', 'order' => 'DESC', 'hierarchical' => false ) ); } else { $searched = ''; $search_results = array(); } ?>

    • get_error_message(); ?>

    class="button-secondary submit-add-to-menu" value="" name="add-taxonomy-menu-item" id="submit-taxonomy-" />

    $_item_object_data ) { if ( empty( $_item_object_data['menu-item-object-id'] ) && // checkbox is not checked ( ! isset( $_item_object_data['menu-item-type'] ) || // and item type either isn't set in_array( $_item_object_data['menu-item-url'], array( 'http://', '' ) ) || // or URL is the default ! ( 'custom' == $_item_object_data['menu-item-type'] && ! isset( $_item_object_data['menu-item-db-id'] ) ) || // or it's not a custom menu item (but not the custom home page) ! empty( $_item_object_data['menu-item-db-id'] ) // or it *is* a custom menu item that already exists ) ) { continue; // then this potential menu item is not getting added to this menu } // if this possible menu item doesn't actually have a menu database ID yet if ( empty( $_item_object_data['menu-item-db-id'] ) || ( 0 > $_possible_db_id ) || $_possible_db_id != $_item_object_data['menu-item-db-id'] ) { $_actual_db_id = 0; } else { $_actual_db_id = (int) $_item_object_data['menu-item-db-id']; } $args = array( 'menu-item-db-id' => ( isset( $_item_object_data['menu-item-db-id'] ) ? $_item_object_data['menu-item-db-id'] : '' ), 'menu-item-object-id' => ( isset( $_item_object_data['menu-item-object-id'] ) ? $_item_object_data['menu-item-object-id'] : '' ), 'menu-item-object' => ( isset( $_item_object_data['menu-item-object'] ) ? $_item_object_data['menu-item-object'] : '' ), 'menu-item-parent-id' => ( isset( $_item_object_data['menu-item-parent-id'] ) ? $_item_object_data['menu-item-parent-id'] : '' ), 'menu-item-position' => ( isset( $_item_object_data['menu-item-position'] ) ? $_item_object_data['menu-item-position'] : '' ), 'menu-item-type' => ( isset( $_item_object_data['menu-item-type'] ) ? $_item_object_data['menu-item-type'] : '' ), 'menu-item-title' => ( isset( $_item_object_data['menu-item-title'] ) ? $_item_object_data['menu-item-title'] : '' ), 'menu-item-url' => ( isset( $_item_object_data['menu-item-url'] ) ? $_item_object_data['menu-item-url'] : '' ), 'menu-item-description' => ( isset( $_item_object_data['menu-item-description'] ) ? $_item_object_data['menu-item-description'] : '' ), 'menu-item-attr-title' => ( isset( $_item_object_data['menu-item-attr-title'] ) ? $_item_object_data['menu-item-attr-title'] : '' ), 'menu-item-target' => ( isset( $_item_object_data['menu-item-target'] ) ? $_item_object_data['menu-item-target'] : '' ), 'menu-item-classes' => ( isset( $_item_object_data['menu-item-classes'] ) ? $_item_object_data['menu-item-classes'] : '' ), 'menu-item-xfn' => ( isset( $_item_object_data['menu-item-xfn'] ) ? $_item_object_data['menu-item-xfn'] : '' ), ); $items_saved[] = wp_update_nav_menu_item( $menu_id, $_actual_db_id, $args ); } } return $items_saved; } /** * Adds custom arguments to some of the meta box object types. * * @since 3.0.0 * * @access private * * @param object $object The post type or taxonomy meta-object. * @return object The post type of taxonomy object. */ function _wp_nav_menu_meta_box_object( $object = null ) { if ( isset( $object->name ) ) { if ( 'page' == $object->name ) { $object->_default_query = array( 'orderby' => 'menu_order title', 'post_status' => 'publish', ); // posts should show only published items } elseif ( 'post' == $object->name ) { $object->_default_query = array( 'post_status' => 'publish', ); // cats should be in reverse chronological order } elseif ( 'category' == $object->name ) { $object->_default_query = array( 'orderby' => 'id', 'order' => 'DESC', ); // custom post types should show only published items } else { $object->_default_query = array( 'post_status' => 'publish', ); } } return $object; } /** * Returns the menu formatted to edit. * * @since 3.0.0 * * @param string $menu_id The ID of the menu to format. * @return string|WP_Error $output The menu formatted to edit or error object on failure. */ function wp_get_nav_menu_to_edit( $menu_id = 0 ) { $menu = wp_get_nav_menu_object( $menu_id ); // If the menu exists, get its items. if ( is_nav_menu( $menu ) ) { $menu_items = wp_get_nav_menu_items( $menu->term_id, array('post_status' => 'any') ); $result = '
    ' : '">'; $result .= '

    ' . __('Select menu items (pages, categories, links) from the boxes at left to begin building your custom menu.') . '

    '; $result .= '
    '; if( empty($menu_items) ) return $result . ' '; $walker_class_name = apply_filters( 'wp_edit_nav_menu_walker', 'Walker_Nav_Menu_Edit', $menu_id ); if ( class_exists( $walker_class_name ) ) $walker = new $walker_class_name; else return new WP_Error( 'menu_walker_not_exist', sprintf( __('The Walker class named %s does not exist.'), $walker_class_name ) ); $some_pending_menu_items = false; foreach( (array) $menu_items as $menu_item ) { if ( isset( $menu_item->post_status ) && 'draft' == $menu_item->post_status ) $some_pending_menu_items = true; } if ( $some_pending_menu_items ) $result .= '

    ' . __('Click Save Menu to make pending menu items public.') . '

    '; $result .= ' '; return $result; } elseif ( is_wp_error( $menu ) ) { return $menu; } } /** * Returns the columns for the nav menus page. * * @since 3.0.0 * * @return string|WP_Error $output The menu formatted to edit or error object on failure. */ function wp_nav_menu_manage_columns() { return array( '_title' => __('Show advanced menu properties'), 'cb' => '', 'link-target' => __('Link Target'), 'css-classes' => __('CSS Classes'), 'xfn' => __('Link Relationship (XFN)'), 'description' => __('Description'), ); } /** * Deletes orphaned draft menu items * * @access private * @since 3.0.0 * */ function _wp_delete_orphaned_draft_menu_items() { global $wpdb; $delete_timestamp = time() - (60*60*24*EMPTY_TRASH_DAYS); // delete orphaned draft menu items $menu_items_to_delete = $wpdb->get_col($wpdb->prepare("SELECT ID FROM $wpdb->posts AS p LEFT JOIN $wpdb->postmeta AS m ON p.ID = m.post_id WHERE post_type = 'nav_menu_item' AND post_status = 'draft' AND meta_key = '_menu_item_orphaned' AND meta_value < '%d'", $delete_timestamp ) ); foreach( (array) $menu_items_to_delete as $menu_item_id ) wp_delete_post( $menu_item_id, true ); } add_action('admin_head-nav-menus.php', '_wp_delete_orphaned_draft_menu_items'); ?> wp-admin/includes/plugin-install.php0000644002347300047320000003656711656660355017437 0ustar vonfabpsaclnper_page) ) $args->per_page = 24; // Allows a plugin to override the WordPress.org API entirely. // Use the filter 'plugins_api_result' to mearly add results. // Please ensure that a object is returned from the following filters. $args = apply_filters('plugins_api_args', $args, $action); $res = apply_filters('plugins_api', false, $action, $args); if ( false === $res ) { $request = wp_remote_post('http://api.wordpress.org/plugins/info/1.0/', array( 'timeout' => 15, 'body' => array('action' => $action, 'request' => serialize($args))) ); if ( is_wp_error($request) ) { $res = new WP_Error('plugins_api_failed', __('An Unexpected HTTP Error occurred during the API request.'), $request->get_error_message() ); } else { $res = unserialize($request['body']); if ( false === $res ) $res = new WP_Error('plugins_api_failed', __('An unknown error occurred.'), $request['body']); } } elseif ( !is_wp_error($res) ) { $res->external = true; } return apply_filters('plugins_api_result', $res, $action, $args); } /** * Retrieve popular WordPress plugin tags. * * @since 2.7.0 * * @param array $args * @return array */ function install_popular_tags( $args = array() ) { $key = md5(serialize($args)); if ( false !== ($tags = get_site_transient('poptags_' . $key) ) ) return $tags; $tags = plugins_api('hot_tags', $args); if ( is_wp_error($tags) ) return $tags; set_site_transient('poptags_' . $key, $tags, 10800); // 3 * 60 * 60 = 10800 return $tags; } function install_dashboard() { ?>

    WordPress Plugin Directory or upload a plugin in .zip format via this page.') ?>

    '; if ( is_wp_error($api_tags) ) { echo $api_tags->get_error_message(); } else { //Set up the tags in a way which can be interprated by wp_generate_tag_cloud() $tags = array(); foreach ( (array)$api_tags as $tag ) $tags[ $tag['name'] ] = (object) array( 'link' => esc_url( self_admin_url('plugin-install.php?tab=search&type=tag&s=' . urlencode($tag['name'])) ), 'name' => $tag['name'], 'id' => sanitize_title_with_dashes($tag['name']), 'count' => $tag['count'] ); echo wp_generate_tag_cloud($tags, array( 'single_text' => __('%d plugin'), 'multiple_text' => __('%d plugins') ) ); } echo '


    '; } add_action('install_plugins_dashboard', 'install_dashboard'); /** * Display search form for searching plugins. * * @since 2.7.0 */ function install_search_form(){ $type = isset($_REQUEST['type']) ? stripslashes( $_REQUEST['type'] ) : ''; $term = isset($_REQUEST['s']) ? stripslashes( $_REQUEST['s'] ) : ''; ?>

    display(); } add_action('install_plugins_search', 'display_plugins_table'); add_action('install_plugins_featured', 'display_plugins_table'); add_action('install_plugins_popular', 'display_plugins_table'); add_action('install_plugins_new', 'display_plugins_table'); add_action('install_plugins_updated', 'display_plugins_table'); /** * Determine the status we can perform on a plugin. * * @since 3.0.0 */ function install_plugin_install_status($api, $loop = false) { // this function is called recursivly, $loop prevents futhur loops. if ( is_array($api) ) $api = (object) $api; //Default to a "new" plugin $status = 'install'; $url = false; //Check to see if this plugin is known to be installed, and has an update awaiting it. $update_plugins = get_site_transient('update_plugins'); if ( is_object( $update_plugins ) ) { foreach ( (array)$update_plugins->response as $file => $plugin ) { if ( $plugin->slug === $api->slug ) { $status = 'update_available'; $update_file = $file; $version = $plugin->new_version; if ( current_user_can('update_plugins') ) $url = wp_nonce_url(self_admin_url('update.php?action=upgrade-plugin&plugin=' . $update_file), 'upgrade-plugin_' . $update_file); break; } } } if ( 'install' == $status ) { if ( is_dir( WP_PLUGIN_DIR . '/' . $api->slug ) ) { $installed_plugin = get_plugins('/' . $api->slug); if ( empty($installed_plugin) ) { if ( current_user_can('install_plugins') ) $url = wp_nonce_url(self_admin_url('update.php?action=install-plugin&plugin=' . $api->slug), 'install-plugin_' . $api->slug); } else { $key = array_shift( $key = array_keys($installed_plugin) ); //Use the first plugin regardless of the name, Could have issues for multiple-plugins in one directory if they share different version numbers if ( version_compare($api->version, $installed_plugin[ $key ]['Version'], '=') ){ $status = 'latest_installed'; } elseif ( version_compare($api->version, $installed_plugin[ $key ]['Version'], '<') ) { $status = 'newer_installed'; $version = $installed_plugin[ $key ]['Version']; } else { //If the above update check failed, Then that probably means that the update checker has out-of-date information, force a refresh if ( ! $loop ) { delete_site_transient('update_plugins'); wp_update_plugins(); return install_plugin_install_status($api, true); } } } } else { // "install" & no directory with that slug if ( current_user_can('install_plugins') ) $url = wp_nonce_url(self_admin_url('update.php?action=install-plugin&plugin=' . $api->slug), 'install-plugin_' . $api->slug); } } if ( isset($_GET['from']) ) $url .= '&from=' . urlencode(stripslashes($_GET['from'])); return compact('status', 'url', 'version'); } /** * Display plugin information in dialog box form. * * @since 2.7.0 */ function install_plugin_information() { global $tab; $api = plugins_api('plugin_information', array('slug' => stripslashes( $_REQUEST['plugin'] ) )); if ( is_wp_error($api) ) wp_die($api); $plugins_allowedtags = array('a' => array('href' => array(), 'title' => array(), 'target' => array()), 'abbr' => array('title' => array()), 'acronym' => array('title' => array()), 'code' => array(), 'pre' => array(), 'em' => array(), 'strong' => array(), 'div' => array(), 'p' => array(), 'ul' => array(), 'ol' => array(), 'li' => array(), 'h1' => array(), 'h2' => array(), 'h3' => array(), 'h4' => array(), 'h5' => array(), 'h6' => array(), 'img' => array('src' => array(), 'class' => array(), 'alt' => array())); //Sanitize HTML foreach ( (array)$api->sections as $section_name => $content ) $api->sections[$section_name] = wp_kses($content, $plugins_allowedtags); foreach ( array('version', 'author', 'requires', 'tested', 'homepage', 'downloaded', 'slug') as $key ) $api->$key = wp_kses($api->$key, $plugins_allowedtags); $section = isset($_REQUEST['section']) ? stripslashes( $_REQUEST['section'] ) : 'description'; //Default to the Description tab, Do not translate, API returns English. if ( empty($section) || ! isset($api->sections[ $section ]) ) $section = array_shift( $section_titles = array_keys((array)$api->sections) ); iframe_header( __('Plugin Install') ); echo "
    \n"; echo "
      \n"; foreach ( (array)$api->sections as $section_name => $content ) { $title = $section_name; $title = ucwords(str_replace('_', ' ', $title)); $class = ( $section_name == $section ) ? ' class="current"' : ''; $href = add_query_arg( array('tab' => $tab, 'section' => $section_name) ); $href = esc_url($href); $san_title = esc_attr(sanitize_title_with_dashes($title)); echo "\t
    • $title
    • \n"; } echo "
    \n"; echo "
    \n"; ?>
    download_link) && ( current_user_can('install_plugins') || current_user_can('update_plugins') ) ) : ?>

    ' . __('Install Now') . ''; break; case 'update_available': if ( $status['url'] ) echo '' . __('Install Update Now') .''; break; case 'newer_installed': echo '' . sprintf(__('Newer Version (%s) Installed'), $status['version']) . ''; break; case 'latest_installed': echo '' . __('Latest Version Installed') . ''; break; } ?>

      version) ) : ?>
    • version ?>
    • author) ) : ?>
    • author, '_blank') ?>
    • last_updated) ) : ?>
    • last_updated)) ) ?>
    • requires) ) : ?>
    • requires) ?>
    • tested) ) : ?>
    • tested ?>
    • downloaded) ) : ?>
    • downloaded), number_format_i18n($api->downloaded)) ?>
    • slug) && empty($api->external) ) : ?>
    • homepage) ) : ?>
    rating) ) : ?>

    <?php _e('5 stars') ?>
    <?php _e('4 stars') ?>
    <?php _e('3 stars') ?>
    <?php _e('2 stars') ?>
    <?php _e('1 star') ?>
    num_ratings), number_format_i18n($api->num_ratings)); ?>
    tested) && version_compare( substr($GLOBALS['wp_version'], 0, strlen($api->tested)), $api->tested, '>') ) echo '

    ' . __('Warning: This plugin has not been tested with your current version of WordPress.') . '

    '; else if ( !empty($api->requires) && version_compare( substr($GLOBALS['wp_version'], 0, strlen($api->requires)), $api->requires, '<') ) echo '

    ' . __('Warning: This plugin has not been marked as compatible with your version of WordPress.') . '

    '; foreach ( (array)$api->sections as $section_name => $content ) { $title = $section_name; $title[0] = strtoupper($title[0]); $title = str_replace('_', ' ', $title); $content = links_add_base_url($content, 'http://wordpress.org/extend/plugins/' . $api->slug . '/'); $content = links_add_target($content, '_blank'); $san_title = esc_attr(sanitize_title_with_dashes($title)); $display = ( $section_name == $section ) ? 'block' : 'none'; echo "\t
    \n"; echo "\t\t

    $title

    "; echo $content; echo "\t
    \n"; } echo "
    \n"; iframe_footer(); exit; } add_action('install_plugins_pre_plugin-information', 'install_plugin_information'); wp-admin/includes/plugin.php0000644002347300047320000016354011656660356015764 0ustar vonfabpsacln * /* * Plugin Name: Name of Plugin * Plugin URI: Link to plugin information * Description: Plugin Description * Author: Plugin author's name * Author URI: Link to the author's web site * Version: Must be set in the plugin for WordPress 2.3+ * Text Domain: Optional. Unique identifier, should be same as the one used in * plugin_text_domain() * Domain Path: Optional. Only useful if the translations are located in a * folder above the plugin's base path. For example, if .mo files are * located in the locale folder then Domain Path will be "/locale/" and * must have the first slash. Defaults to the base folder the plugin is * located in. * Network: Optional. Specify "Network: true" to require that a plugin is activated * across all sites in an installation. This will prevent a plugin from being * activated on a single site when Multisite is enabled. * * / # Remove the space to close comment * * * Plugin data returned array contains the following: * 'Name' - Name of the plugin, must be unique. * 'Title' - Title of the plugin and the link to the plugin's web site. * 'Description' - Description of what the plugin does and/or notes * from the author. * 'Author' - The author's name * 'AuthorURI' - The authors web site address. * 'Version' - The plugin version number. * 'PluginURI' - Plugin web site address. * 'TextDomain' - Plugin's text domain for localization. * 'DomainPath' - Plugin's relative directory path to .mo files. * 'Network' - Boolean. Whether the plugin can only be activated network wide. * * Some users have issues with opening large files and manipulating the contents * for want is usually the first 1kiB or 2kiB. This function stops pulling in * the plugin contents when it has all of the required plugin data. * * The first 8kiB of the file will be pulled in and if the plugin data is not * within that first 8kiB, then the plugin author should correct their plugin * and move the plugin data headers to the top. * * The plugin file is assumed to have permissions to allow for scripts to read * the file. This is not checked however and the file is only opened for * reading. * * @link http://trac.wordpress.org/ticket/5651 Previous Optimizations. * @link http://trac.wordpress.org/ticket/7372 Further and better Optimizations. * @since 1.5.0 * * @param string $plugin_file Path to the plugin file * @param bool $markup If the returned data should have HTML markup applied * @param bool $translate If the returned data should be translated * @return array See above for description. */ function get_plugin_data( $plugin_file, $markup = true, $translate = true ) { $default_headers = array( 'Name' => 'Plugin Name', 'PluginURI' => 'Plugin URI', 'Version' => 'Version', 'Description' => 'Description', 'Author' => 'Author', 'AuthorURI' => 'Author URI', 'TextDomain' => 'Text Domain', 'DomainPath' => 'Domain Path', 'Network' => 'Network', // Site Wide Only is deprecated in favor of Network. '_sitewide' => 'Site Wide Only', ); $plugin_data = get_file_data( $plugin_file, $default_headers, 'plugin' ); // Site Wide Only is the old header for Network if ( empty( $plugin_data['Network'] ) && ! empty( $plugin_data['_sitewide'] ) ) { _deprecated_argument( __FUNCTION__, '3.0', sprintf( __( 'The %1$s plugin header is deprecated. Use %2$s instead.' ), 'Site Wide Only: true', 'Network: true' ) ); $plugin_data['Network'] = $plugin_data['_sitewide']; } $plugin_data['Network'] = ( 'true' == strtolower( $plugin_data['Network'] ) ); unset( $plugin_data['_sitewide'] ); //For backward compatibility by default Title is the same as Name. $plugin_data['Title'] = $plugin_data['Name']; if ( $markup || $translate ) $plugin_data = _get_plugin_data_markup_translate( $plugin_file, $plugin_data, $markup, $translate ); else $plugin_data['AuthorName'] = $plugin_data['Author']; return $plugin_data; } function _get_plugin_data_markup_translate($plugin_file, $plugin_data, $markup = true, $translate = true) { //Translate fields if ( $translate && ! empty($plugin_data['TextDomain']) ) { if ( ! empty( $plugin_data['DomainPath'] ) ) load_plugin_textdomain($plugin_data['TextDomain'], false, dirname($plugin_file). $plugin_data['DomainPath']); else load_plugin_textdomain($plugin_data['TextDomain'], false, dirname($plugin_file)); foreach ( array('Name', 'PluginURI', 'Description', 'Author', 'AuthorURI', 'Version') as $field ) $plugin_data[ $field ] = translate($plugin_data[ $field ], $plugin_data['TextDomain']); } $plugins_allowedtags = array( 'a' => array( 'href' => array(), 'title' => array() ), 'abbr' => array( 'title' => array() ), 'acronym' => array( 'title' => array() ), 'code' => array(), 'em' => array(), 'strong' => array(), ); $plugin_data['AuthorName'] = $plugin_data['Author'] = wp_kses( $plugin_data['Author'], $plugins_allowedtags ); //Apply Markup if ( $markup ) { if ( ! empty($plugin_data['PluginURI']) && ! empty($plugin_data['Name']) ) $plugin_data['Title'] = '' . $plugin_data['Name'] . ''; else $plugin_data['Title'] = $plugin_data['Name']; if ( ! empty($plugin_data['AuthorURI']) && ! empty($plugin_data['Author']) ) $plugin_data['Author'] = '' . $plugin_data['Author'] . ''; $plugin_data['Description'] = wptexturize( $plugin_data['Description'] ); if ( ! empty($plugin_data['Author']) ) $plugin_data['Description'] .= ' ' . sprintf( __('By %s'), $plugin_data['Author'] ) . '.'; } // Sanitize all displayed data. Author and AuthorName sanitized above. $plugin_data['Title'] = wp_kses( $plugin_data['Title'], $plugins_allowedtags ); $plugin_data['Version'] = wp_kses( $plugin_data['Version'], $plugins_allowedtags ); $plugin_data['Description'] = wp_kses( $plugin_data['Description'], $plugins_allowedtags ); $plugin_data['Name'] = wp_kses( $plugin_data['Name'], $plugins_allowedtags ); return $plugin_data; } /** * Get a list of a plugin's files. * * @since 2.8.0 * * @param string $plugin Plugin ID * @return array List of files relative to the plugin root. */ function get_plugin_files($plugin) { $plugin_file = WP_PLUGIN_DIR . '/' . $plugin; $dir = dirname($plugin_file); $plugin_files = array($plugin); if ( is_dir($dir) && $dir != WP_PLUGIN_DIR ) { $plugins_dir = @ opendir( $dir ); if ( $plugins_dir ) { while (($file = readdir( $plugins_dir ) ) !== false ) { if ( substr($file, 0, 1) == '.' ) continue; if ( is_dir( $dir . '/' . $file ) ) { $plugins_subdir = @ opendir( $dir . '/' . $file ); if ( $plugins_subdir ) { while (($subfile = readdir( $plugins_subdir ) ) !== false ) { if ( substr($subfile, 0, 1) == '.' ) continue; $plugin_files[] = plugin_basename("$dir/$file/$subfile"); } @closedir( $plugins_subdir ); } } else { if ( plugin_basename("$dir/$file") != $plugin ) $plugin_files[] = plugin_basename("$dir/$file"); } } @closedir( $plugins_dir ); } } return $plugin_files; } /** * Check the plugins directory and retrieve all plugin files with plugin data. * * WordPress only supports plugin files in the base plugins directory * (wp-content/plugins) and in one directory above the plugins directory * (wp-content/plugins/my-plugin). The file it looks for has the plugin data and * must be found in those two locations. It is recommended that do keep your * plugin files in directories. * * The file with the plugin data is the file that will be included and therefore * needs to have the main execution for the plugin. This does not mean * everything must be contained in the file and it is recommended that the file * be split for maintainability. Keep everything in one file for extreme * optimization purposes. * * @since 1.5.0 * * @param string $plugin_folder Optional. Relative path to single plugin folder. * @return array Key is the plugin file path and the value is an array of the plugin data. */ function get_plugins($plugin_folder = '') { if ( ! $cache_plugins = wp_cache_get('plugins', 'plugins') ) $cache_plugins = array(); if ( isset($cache_plugins[ $plugin_folder ]) ) return $cache_plugins[ $plugin_folder ]; $wp_plugins = array (); $plugin_root = WP_PLUGIN_DIR; if ( !empty($plugin_folder) ) $plugin_root .= $plugin_folder; // Files in wp-content/plugins directory $plugins_dir = @ opendir( $plugin_root); $plugin_files = array(); if ( $plugins_dir ) { while (($file = readdir( $plugins_dir ) ) !== false ) { if ( substr($file, 0, 1) == '.' ) continue; if ( is_dir( $plugin_root.'/'.$file ) ) { $plugins_subdir = @ opendir( $plugin_root.'/'.$file ); if ( $plugins_subdir ) { while (($subfile = readdir( $plugins_subdir ) ) !== false ) { if ( substr($subfile, 0, 1) == '.' ) continue; if ( substr($subfile, -4) == '.php' ) $plugin_files[] = "$file/$subfile"; } } } else { if ( substr($file, -4) == '.php' ) $plugin_files[] = $file; } } } else { return $wp_plugins; } @closedir( $plugins_dir ); @closedir( $plugins_subdir ); if ( empty($plugin_files) ) return $wp_plugins; foreach ( $plugin_files as $plugin_file ) { if ( !is_readable( "$plugin_root/$plugin_file" ) ) continue; $plugin_data = get_plugin_data( "$plugin_root/$plugin_file", false, false ); //Do not apply markup/translate as it'll be cached. if ( empty ( $plugin_data['Name'] ) ) continue; $wp_plugins[plugin_basename( $plugin_file )] = $plugin_data; } uasort( $wp_plugins, '_sort_uname_callback' ); $cache_plugins[ $plugin_folder ] = $wp_plugins; wp_cache_set('plugins', $cache_plugins, 'plugins'); return $wp_plugins; } /** * Check the mu-plugins directory and retrieve all mu-plugin files with any plugin data. * * WordPress only includes mu-plugin files in the base mu-plugins directory (wp-content/mu-plugins). * * @since 3.0.0 * @return array Key is the mu-plugin file path and the value is an array of the mu-plugin data. */ function get_mu_plugins() { $wp_plugins = array(); // Files in wp-content/mu-plugins directory $plugin_files = array(); if ( ! is_dir( WPMU_PLUGIN_DIR ) ) return $wp_plugins; if ( $plugins_dir = @ opendir( WPMU_PLUGIN_DIR ) ) { while ( ( $file = readdir( $plugins_dir ) ) !== false ) { if ( substr( $file, -4 ) == '.php' ) $plugin_files[] = $file; } } else { return $wp_plugins; } @closedir( $plugins_dir ); if ( empty($plugin_files) ) return $wp_plugins; foreach ( $plugin_files as $plugin_file ) { if ( !is_readable( WPMU_PLUGIN_DIR . "/$plugin_file" ) ) continue; $plugin_data = get_plugin_data( WPMU_PLUGIN_DIR . "/$plugin_file", false, false ); //Do not apply markup/translate as it'll be cached. if ( empty ( $plugin_data['Name'] ) ) $plugin_data['Name'] = $plugin_file; $wp_plugins[ $plugin_file ] = $plugin_data; } if ( isset( $wp_plugins['index.php'] ) && filesize( WPMU_PLUGIN_DIR . '/index.php') <= 30 ) // silence is golden unset( $wp_plugins['index.php'] ); uasort( $wp_plugins, '_sort_uname_callback' ); return $wp_plugins; } /** * Callback to sort array by a 'Name' key. * * @since 3.1.0 * @access private */ function _sort_uname_callback( $a, $b ) { return strnatcasecmp( $a['Name'], $b['Name'] ); } /** * Check the wp-content directory and retrieve all drop-ins with any plugin data. * * @since 3.0.0 * @return array Key is the file path and the value is an array of the plugin data. */ function get_dropins() { $dropins = array(); $plugin_files = array(); $_dropins = _get_dropins(); // These exist in the wp-content directory if ( $plugins_dir = @ opendir( WP_CONTENT_DIR ) ) { while ( ( $file = readdir( $plugins_dir ) ) !== false ) { if ( isset( $_dropins[ $file ] ) ) $plugin_files[] = $file; } } else { return $dropins; } @closedir( $plugins_dir ); if ( empty($plugin_files) ) return $dropins; foreach ( $plugin_files as $plugin_file ) { if ( !is_readable( WP_CONTENT_DIR . "/$plugin_file" ) ) continue; $plugin_data = get_plugin_data( WP_CONTENT_DIR . "/$plugin_file", false, false ); //Do not apply markup/translate as it'll be cached. if ( empty( $plugin_data['Name'] ) ) $plugin_data['Name'] = $plugin_file; $dropins[ $plugin_file ] = $plugin_data; } uksort( $dropins, 'strnatcasecmp' ); return $dropins; } /** * Returns drop-ins that WordPress uses. * * Includes Multisite drop-ins only when is_multisite() * * @since 3.0.0 * @return array Key is file name. The value is an array, with the first value the * purpose of the drop-in and the second value the name of the constant that must be * true for the drop-in to be used, or true if no constant is required. */ function _get_dropins() { $dropins = array( 'advanced-cache.php' => array( __( 'Advanced caching plugin.' ), 'WP_CACHE' ), // WP_CACHE 'db.php' => array( __( 'Custom database class.' ), true ), // auto on load 'db-error.php' => array( __( 'Custom database error message.' ), true ), // auto on error 'install.php' => array( __( 'Custom install script.' ), true ), // auto on install 'maintenance.php' => array( __( 'Custom maintenance message.' ), true ), // auto on maintenance 'object-cache.php' => array( __( 'External object cache.' ), true ), // auto on load ); if ( is_multisite() ) { $dropins['sunrise.php' ] = array( __( 'Executed before Multisite is loaded.' ), 'SUNRISE' ); // SUNRISE $dropins['blog-deleted.php' ] = array( __( 'Custom site deleted message.' ), true ); // auto on deleted blog $dropins['blog-inactive.php' ] = array( __( 'Custom site inactive message.' ), true ); // auto on inactive blog $dropins['blog-suspended.php'] = array( __( 'Custom site suspended message.' ), true ); // auto on archived or spammed blog } return $dropins; } /** * Check whether the plugin is active by checking the active_plugins list. * * @since 2.5.0 * * @param string $plugin Base plugin path from plugins directory. * @return bool True, if in the active plugins list. False, not in the list. */ function is_plugin_active( $plugin ) { return in_array( $plugin, (array) get_option( 'active_plugins', array() ) ) || is_plugin_active_for_network( $plugin ); } /** * Check whether the plugin is inactive. * * Reverse of is_plugin_active(). Used as a callback. * * @since 3.1.0 * @see is_plugin_active() * * @param string $plugin Base plugin path from plugins directory. * @return bool True if inactive. False if active. */ function is_plugin_inactive( $plugin ) { return ! is_plugin_active( $plugin ); } /** * Check whether the plugin is active for the entire network. * * @since 3.0.0 * * @param string $plugin Base plugin path from plugins directory. * @return bool True, if active for the network, otherwise false. */ function is_plugin_active_for_network( $plugin ) { if ( !is_multisite() ) return false; $plugins = get_site_option( 'active_sitewide_plugins'); if ( isset($plugins[$plugin]) ) return true; return false; } /** * Checks for "Network: true" in the plugin header to see if this should * be activated only as a network wide plugin. The plugin would also work * when Multisite is not enabled. * * Checks for "Site Wide Only: true" for backwards compatibility. * * @since 3.0.0 * * @param string $plugin Plugin to check * @return bool True if plugin is network only, false otherwise. */ function is_network_only_plugin( $plugin ) { $plugin_data = get_plugin_data( WP_PLUGIN_DIR . '/' . $plugin ); if ( $plugin_data ) return $plugin_data['Network']; return false; } /** * Attempts activation of plugin in a "sandbox" and redirects on success. * * A plugin that is already activated will not attempt to be activated again. * * The way it works is by setting the redirection to the error before trying to * include the plugin file. If the plugin fails, then the redirection will not * be overwritten with the success message. Also, the options will not be * updated and the activation hook will not be called on plugin error. * * It should be noted that in no way the below code will actually prevent errors * within the file. The code should not be used elsewhere to replicate the * "sandbox", which uses redirection to work. * {@source 13 1} * * If any errors are found or text is outputted, then it will be captured to * ensure that the success redirection will update the error redirection. * * @since 2.5.0 * * @param string $plugin Plugin path to main plugin file with plugin data. * @param string $redirect Optional. URL to redirect to. * @param bool $network_wide Whether to enable the plugin for all sites in the * network or just the current site. Multisite only. Default is false. * @param bool $silent Prevent calling activation hooks. Optional, default is false. * @return WP_Error|null WP_Error on invalid file or null on success. */ function activate_plugin( $plugin, $redirect = '', $network_wide = false, $silent = false ) { $plugin = plugin_basename( trim( $plugin ) ); if ( is_multisite() && ( $network_wide || is_network_only_plugin($plugin) ) ) { $network_wide = true; $current = get_site_option( 'active_sitewide_plugins', array() ); } else { $current = get_option( 'active_plugins', array() ); } $valid = validate_plugin($plugin); if ( is_wp_error($valid) ) return $valid; if ( !in_array($plugin, $current) ) { if ( !empty($redirect) ) wp_redirect(add_query_arg('_error_nonce', wp_create_nonce('plugin-activation-error_' . $plugin), $redirect)); // we'll override this later if the plugin can be included without fatal error ob_start(); include_once(WP_PLUGIN_DIR . '/' . $plugin); if ( ! $silent ) { do_action( 'activate_plugin', $plugin, $network_wide ); do_action( 'activate_' . $plugin, $network_wide ); } if ( $network_wide ) { $current[$plugin] = time(); update_site_option( 'active_sitewide_plugins', $current ); } else { $current[] = $plugin; sort($current); update_option('active_plugins', $current); } if ( ! $silent ) { do_action( 'activated_plugin', $plugin, $network_wide ); } if ( ob_get_length() > 0 ) { $output = ob_get_clean(); return new WP_Error('unexpected_output', __('The plugin generated unexpected output.'), $output); } ob_end_clean(); } return null; } /** * Deactivate a single plugin or multiple plugins. * * The deactivation hook is disabled by the plugin upgrader by using the $silent * parameter. * * @since 2.5.0 * * @param string|array $plugins Single plugin or list of plugins to deactivate. * @param bool $silent Prevent calling deactivation hooks. Default is false. */ function deactivate_plugins( $plugins, $silent = false ) { if ( is_multisite() ) $network_current = get_site_option( 'active_sitewide_plugins', array() ); $current = get_option( 'active_plugins', array() ); $do_blog = $do_network = false; foreach ( (array) $plugins as $plugin ) { $plugin = plugin_basename( trim( $plugin ) ); if ( ! is_plugin_active($plugin) ) continue; $network_wide = is_plugin_active_for_network( $plugin ); if ( ! $silent ) do_action( 'deactivate_plugin', $plugin, $network_wide ); if ( $network_wide ) { $do_network = true; unset( $network_current[ $plugin ] ); } else { $key = array_search( $plugin, $current ); if ( false !== $key ) { $do_blog = true; array_splice( $current, $key, 1 ); } } if ( ! $silent ) { do_action( 'deactivate_' . $plugin, $network_wide ); do_action( 'deactivated_plugin', $plugin, $network_wide ); } } if ( $do_blog ) update_option('active_plugins', $current); if ( $do_network ) update_site_option( 'active_sitewide_plugins', $network_current ); } /** * Activate multiple plugins. * * When WP_Error is returned, it does not mean that one of the plugins had * errors. It means that one or more of the plugins file path was invalid. * * The execution will be halted as soon as one of the plugins has an error. * * @since 2.6.0 * * @param string|array $plugins * @param string $redirect Redirect to page after successful activation. * @param bool $network_wide Whether to enable the plugin for all sites in the network. * @param bool $silent Prevent calling activation hooks. Default is false. * @return bool|WP_Error True when finished or WP_Error if there were errors during a plugin activation. */ function activate_plugins( $plugins, $redirect = '', $network_wide = false, $silent = false ) { if ( !is_array($plugins) ) $plugins = array($plugins); $errors = array(); foreach ( $plugins as $plugin ) { if ( !empty($redirect) ) $redirect = add_query_arg('plugin', $plugin, $redirect); $result = activate_plugin($plugin, $redirect, $network_wide, $silent); if ( is_wp_error($result) ) $errors[$plugin] = $result; } if ( !empty($errors) ) return new WP_Error('plugins_invalid', __('One of the plugins is invalid.'), $errors); return true; } /** * Remove directory and files of a plugin for a single or list of plugin(s). * * If the plugins parameter list is empty, false will be returned. True when * completed. * * @since 2.6.0 * * @param array $plugins List of plugin * @param string $redirect Redirect to page when complete. * @return mixed */ function delete_plugins($plugins, $redirect = '' ) { global $wp_filesystem; if ( empty($plugins) ) return false; $checked = array(); foreach( $plugins as $plugin ) $checked[] = 'checked[]=' . $plugin; ob_start(); $url = wp_nonce_url('plugins.php?action=delete-selected&verify-delete=1&' . implode('&', $checked), 'bulk-plugins'); if ( false === ($credentials = request_filesystem_credentials($url)) ) { $data = ob_get_contents(); ob_end_clean(); if ( ! empty($data) ){ include_once( ABSPATH . 'wp-admin/admin-header.php'); echo $data; include( ABSPATH . 'wp-admin/admin-footer.php'); exit; } return; } if ( ! WP_Filesystem($credentials) ) { request_filesystem_credentials($url, '', true); //Failed to connect, Error and request again $data = ob_get_contents(); ob_end_clean(); if ( ! empty($data) ){ include_once( ABSPATH . 'wp-admin/admin-header.php'); echo $data; include( ABSPATH . 'wp-admin/admin-footer.php'); exit; } return; } if ( ! is_object($wp_filesystem) ) return new WP_Error('fs_unavailable', __('Could not access filesystem.')); if ( is_wp_error($wp_filesystem->errors) && $wp_filesystem->errors->get_error_code() ) return new WP_Error('fs_error', __('Filesystem error.'), $wp_filesystem->errors); //Get the base plugin folder $plugins_dir = $wp_filesystem->wp_plugins_dir(); if ( empty($plugins_dir) ) return new WP_Error('fs_no_plugins_dir', __('Unable to locate WordPress Plugin directory.')); $plugins_dir = trailingslashit( $plugins_dir ); $errors = array(); foreach( $plugins as $plugin_file ) { // Run Uninstall hook if ( is_uninstallable_plugin( $plugin_file ) ) uninstall_plugin($plugin_file); $this_plugin_dir = trailingslashit( dirname($plugins_dir . $plugin_file) ); // If plugin is in its own directory, recursively delete the directory. if ( strpos($plugin_file, '/') && $this_plugin_dir != $plugins_dir ) //base check on if plugin includes directory seperator AND that its not the root plugin folder $deleted = $wp_filesystem->delete($this_plugin_dir, true); else $deleted = $wp_filesystem->delete($plugins_dir . $plugin_file); if ( ! $deleted ) $errors[] = $plugin_file; } if ( ! empty($errors) ) return new WP_Error('could_not_remove_plugin', sprintf(__('Could not fully remove the plugin(s) %s.'), implode(', ', $errors)) ); // Force refresh of plugin update information if ( $current = get_site_transient('update_plugins') ) { unset( $current->response[ $plugin_file ] ); set_site_transient('update_plugins', $current); } return true; } /** * Validate active plugins * * Validate all active plugins, deactivates invalid and * returns an array of deactivated ones. * * @since 2.5.0 * @return array invalid plugins, plugin as key, error as value */ function validate_active_plugins() { $plugins = get_option( 'active_plugins', array() ); // validate vartype: array if ( ! is_array( $plugins ) ) { update_option( 'active_plugins', array() ); $plugins = array(); } if ( is_multisite() && is_super_admin() ) { $network_plugins = (array) get_site_option( 'active_sitewide_plugins', array() ); $plugins = array_merge( $plugins, array_keys( $network_plugins ) ); } if ( empty( $plugins ) ) return; $invalid = array(); // invalid plugins get deactivated foreach ( $plugins as $plugin ) { $result = validate_plugin( $plugin ); if ( is_wp_error( $result ) ) { $invalid[$plugin] = $result; deactivate_plugins( $plugin, true ); } } return $invalid; } /** * Validate the plugin path. * * Checks that the file exists and {@link validate_file() is valid file}. * * @since 2.5.0 * * @param string $plugin Plugin Path * @return WP_Error|int 0 on success, WP_Error on failure. */ function validate_plugin($plugin) { if ( validate_file($plugin) ) return new WP_Error('plugin_invalid', __('Invalid plugin path.')); if ( ! file_exists(WP_PLUGIN_DIR . '/' . $plugin) ) return new WP_Error('plugin_not_found', __('Plugin file does not exist.')); $installed_plugins = get_plugins(); if ( ! isset($installed_plugins[$plugin]) ) return new WP_Error('no_plugin_header', __('The plugin does not have a valid header.')); return 0; } /** * Whether the plugin can be uninstalled. * * @since 2.7.0 * * @param string $plugin Plugin path to check. * @return bool Whether plugin can be uninstalled. */ function is_uninstallable_plugin($plugin) { $file = plugin_basename($plugin); $uninstallable_plugins = (array) get_option('uninstall_plugins'); if ( isset( $uninstallable_plugins[$file] ) || file_exists( WP_PLUGIN_DIR . '/' . dirname($file) . '/uninstall.php' ) ) return true; return false; } /** * Uninstall a single plugin. * * Calls the uninstall hook, if it is available. * * @since 2.7.0 * * @param string $plugin Relative plugin path from Plugin Directory. */ function uninstall_plugin($plugin) { $file = plugin_basename($plugin); $uninstallable_plugins = (array) get_option('uninstall_plugins'); if ( file_exists( WP_PLUGIN_DIR . '/' . dirname($file) . '/uninstall.php' ) ) { if ( isset( $uninstallable_plugins[$file] ) ) { unset($uninstallable_plugins[$file]); update_option('uninstall_plugins', $uninstallable_plugins); } unset($uninstallable_plugins); define('WP_UNINSTALL_PLUGIN', $file); include WP_PLUGIN_DIR . '/' . dirname($file) . '/uninstall.php'; return true; } if ( isset( $uninstallable_plugins[$file] ) ) { $callable = $uninstallable_plugins[$file]; unset($uninstallable_plugins[$file]); update_option('uninstall_plugins', $uninstallable_plugins); unset($uninstallable_plugins); include WP_PLUGIN_DIR . '/' . $file; add_action( 'uninstall_' . $file, $callable ); do_action( 'uninstall_' . $file ); } } // // Menu // /** * Add a top level menu page * * This function takes a capability which will be used to determine whether * or not a page is included in the menu. * * The function which is hooked in to handle the output of the page must check * that the user has the required capability as well. * * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected * @param string $menu_title The text to be used for the menu * @param string $capability The capability required for this menu to be displayed to the user. * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) * @param callback $function The function to be called to output the content for this page. * @param string $icon_url The url to the icon to be used for this menu * @param int $position The position in the menu order this one should appear * * @return string The resulting page's hook_suffix */ function add_menu_page( $page_title, $menu_title, $capability, $menu_slug, $function = '', $icon_url = '', $position = NULL ) { global $menu, $admin_page_hooks, $_registered_pages, $_parent_pages; $menu_slug = plugin_basename( $menu_slug ); $admin_page_hooks[$menu_slug] = sanitize_title( $menu_title ); $hookname = get_plugin_page_hookname( $menu_slug, '' ); if ( !empty( $function ) && !empty( $hookname ) && current_user_can( $capability ) ) add_action( $hookname, $function ); if ( empty($icon_url) ) $icon_url = esc_url( admin_url( 'images/generic.png' ) ); elseif ( is_ssl() && 0 === strpos($icon_url, 'http://') ) $icon_url = 'https://' . substr($icon_url, 7); $new_menu = array( $menu_title, $capability, $menu_slug, $page_title, 'menu-top ' . $hookname, $hookname, $icon_url ); if ( null === $position ) $menu[] = $new_menu; else $menu[$position] = $new_menu; $_registered_pages[$hookname] = true; // No parent as top level $_parent_pages[$menu_slug] = false; return $hookname; } /** * Add a top level menu page in the 'objects' section * * This function takes a capability which will be used to determine whether * or not a page is included in the menu. * * The function which is hooked in to handle the output of the page must check * that the user has the required capability as well. * * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected * @param string $menu_title The text to be used for the menu * @param string $capability The capability required for this menu to be displayed to the user. * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) * @param callback $function The function to be called to output the content for this page. * @param string $icon_url The url to the icon to be used for this menu * * @return string The resulting page's hook_suffix */ function add_object_page( $page_title, $menu_title, $capability, $menu_slug, $function = '', $icon_url = '') { global $_wp_last_object_menu; $_wp_last_object_menu++; return add_menu_page($page_title, $menu_title, $capability, $menu_slug, $function, $icon_url, $_wp_last_object_menu); } /** * Add a top level menu page in the 'utility' section * * This function takes a capability which will be used to determine whether * or not a page is included in the menu. * * The function which is hooked in to handle the output of the page must check * that the user has the required capability as well. * * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected * @param string $menu_title The text to be used for the menu * @param string $capability The capability required for this menu to be displayed to the user. * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) * @param callback $function The function to be called to output the content for this page. * @param string $icon_url The url to the icon to be used for this menu * * @return string The resulting page's hook_suffix */ function add_utility_page( $page_title, $menu_title, $capability, $menu_slug, $function = '', $icon_url = '') { global $_wp_last_utility_menu; $_wp_last_utility_menu++; return add_menu_page($page_title, $menu_title, $capability, $menu_slug, $function, $icon_url, $_wp_last_utility_menu); } /** * Add a sub menu page * * This function takes a capability which will be used to determine whether * or not a page is included in the menu. * * The function which is hooked in to handle the output of the page must check * that the user has the required capability as well. * * @param string $parent_slug The slug name for the parent menu (or the file name of a standard WordPress admin page) * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected * @param string $menu_title The text to be used for the menu * @param string $capability The capability required for this menu to be displayed to the user. * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) * @param callback $function The function to be called to output the content for this page. * * @return string The resulting page's hook_suffix */ function add_submenu_page( $parent_slug, $page_title, $menu_title, $capability, $menu_slug, $function = '' ) { global $submenu; global $menu; global $_wp_real_parent_file; global $_wp_submenu_nopriv; global $_registered_pages; global $_parent_pages; $menu_slug = plugin_basename( $menu_slug ); $parent_slug = plugin_basename( $parent_slug); if ( isset( $_wp_real_parent_file[$parent_slug] ) ) $parent_slug = $_wp_real_parent_file[$parent_slug]; if ( !current_user_can( $capability ) ) { $_wp_submenu_nopriv[$parent_slug][$menu_slug] = 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_slug] ) && $menu_slug != $parent_slug ) { foreach ( (array)$menu as $parent_menu ) { if ( $parent_menu[2] == $parent_slug && current_user_can( $parent_menu[1] ) ) $submenu[$parent_slug][] = $parent_menu; } } $submenu[$parent_slug][] = array ( $menu_title, $capability, $menu_slug, $page_title ); $hookname = get_plugin_page_hookname( $menu_slug, $parent_slug); if (!empty ( $function ) && !empty ( $hookname )) add_action( $hookname, $function ); $_registered_pages[$hookname] = true; // backwards-compatibility for plugins using add_management page. See wp-admin/admin.php for redirect from edit.php to tools.php if ( 'tools.php' == $parent_slug ) $_registered_pages[get_plugin_page_hookname( $menu_slug, 'edit.php')] = true; // No parent as top level $_parent_pages[$menu_slug] = $parent_slug; return $hookname; } /** * Add sub menu page to the tools main menu. * * This function takes a capability which will be used to determine whether * or not a page is included in the menu. * * The function which is hooked in to handle the output of the page must check * that the user has the required capability as well. * * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected * @param string $menu_title The text to be used for the menu * @param string $capability The capability required for this menu to be displayed to the user. * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) * @param callback $function The function to be called to output the content for this page. * * @return string The resulting page's hook_suffix */ function add_management_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' ) { return add_submenu_page( 'tools.php', $page_title, $menu_title, $capability, $menu_slug, $function ); } /** * Add sub menu page to the options main menu. * * This function takes a capability which will be used to determine whether * or not a page is included in the menu. * * The function which is hooked in to handle the output of the page must check * that the user has the required capability as well. * * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected * @param string $menu_title The text to be used for the menu * @param string $capability The capability required for this menu to be displayed to the user. * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) * @param callback $function The function to be called to output the content for this page. * * @return string The resulting page's hook_suffix */ function add_options_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' ) { return add_submenu_page( 'options-general.php', $page_title, $menu_title, $capability, $menu_slug, $function ); } /** * Add sub menu page to the themes main menu. * * This function takes a capability which will be used to determine whether * or not a page is included in the menu. * * The function which is hooked in to handle the output of the page must check * that the user has the required capability as well. * * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected * @param string $menu_title The text to be used for the menu * @param string $capability The capability required for this menu to be displayed to the user. * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) * @param callback $function The function to be called to output the content for this page. * * @return string The resulting page's hook_suffix */ function add_theme_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' ) { return add_submenu_page( 'themes.php', $page_title, $menu_title, $capability, $menu_slug, $function ); } /** * Add sub menu page to the plugins main menu. * * This function takes a capability which will be used to determine whether * or not a page is included in the menu. * * The function which is hooked in to handle the output of the page must check * that the user has the required capability as well. * * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected * @param string $menu_title The text to be used for the menu * @param string $capability The capability required for this menu to be displayed to the user. * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) * @param callback $function The function to be called to output the content for this page. * * @return string The resulting page's hook_suffix */ function add_plugins_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' ) { return add_submenu_page( 'plugins.php', $page_title, $menu_title, $capability, $menu_slug, $function ); } /** * Add sub menu page to the Users/Profile main menu. * * This function takes a capability which will be used to determine whether * or not a page is included in the menu. * * The function which is hooked in to handle the output of the page must check * that the user has the required capability as well. * * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected * @param string $menu_title The text to be used for the menu * @param string $capability The capability required for this menu to be displayed to the user. * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) * @param callback $function The function to be called to output the content for this page. * * @return string The resulting page's hook_suffix */ function add_users_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' ) { if ( current_user_can('edit_users') ) $parent = 'users.php'; else $parent = 'profile.php'; return add_submenu_page( $parent, $page_title, $menu_title, $capability, $menu_slug, $function ); } /** * Add sub menu page to the Dashboard main menu. * * This function takes a capability which will be used to determine whether * or not a page is included in the menu. * * The function which is hooked in to handle the output of the page must check * that the user has the required capability as well. * * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected * @param string $menu_title The text to be used for the menu * @param string $capability The capability required for this menu to be displayed to the user. * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) * @param callback $function The function to be called to output the content for this page. * * @return string The resulting page's hook_suffix */ function add_dashboard_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' ) { return add_submenu_page( 'index.php', $page_title, $menu_title, $capability, $menu_slug, $function ); } /** * Add sub menu page to the posts main menu. * * This function takes a capability which will be used to determine whether * or not a page is included in the menu. * * The function which is hooked in to handle the output of the page must check * that the user has the required capability as well. * * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected * @param string $menu_title The text to be used for the menu * @param string $capability The capability required for this menu to be displayed to the user. * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) * @param callback $function The function to be called to output the content for this page. * * @return string The resulting page's hook_suffix */ function add_posts_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' ) { return add_submenu_page( 'edit.php', $page_title, $menu_title, $capability, $menu_slug, $function ); } /** * Add sub menu page to the media main menu. * * This function takes a capability which will be used to determine whether * or not a page is included in the menu. * * The function which is hooked in to handle the output of the page must check * that the user has the required capability as well. * * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected * @param string $menu_title The text to be used for the menu * @param string $capability The capability required for this menu to be displayed to the user. * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) * @param callback $function The function to be called to output the content for this page. * * @return string The resulting page's hook_suffix */ function add_media_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' ) { return add_submenu_page( 'upload.php', $page_title, $menu_title, $capability, $menu_slug, $function ); } /** * Add sub menu page to the links main menu. * * This function takes a capability which will be used to determine whether * or not a page is included in the menu. * * The function which is hooked in to handle the output of the page must check * that the user has the required capability as well. * * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected * @param string $menu_title The text to be used for the menu * @param string $capability The capability required for this menu to be displayed to the user. * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) * @param callback $function The function to be called to output the content for this page. * * @return string The resulting page's hook_suffix */ function add_links_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' ) { return add_submenu_page( 'link-manager.php', $page_title, $menu_title, $capability, $menu_slug, $function ); } /** * Add sub menu page to the pages main menu. * * This function takes a capability which will be used to determine whether * or not a page is included in the menu. * * The function which is hooked in to handle the output of the page must check * that the user has the required capability as well. * * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected * @param string $menu_title The text to be used for the menu * @param string $capability The capability required for this menu to be displayed to the user. * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) * @param callback $function The function to be called to output the content for this page. * * @return string The resulting page's hook_suffix */ function add_pages_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' ) { return add_submenu_page( 'edit.php?post_type=page', $page_title, $menu_title, $capability, $menu_slug, $function ); } /** * Add sub menu page to the comments main menu. * * This function takes a capability which will be used to determine whether * or not a page is included in the menu. * * The function which is hooked in to handle the output of the page must check * that the user has the required capability as well. * * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected * @param string $menu_title The text to be used for the menu * @param string $capability The capability required for this menu to be displayed to the user. * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) * @param callback $function The function to be called to output the content for this page. * * @return string The resulting page's hook_suffix */ function add_comments_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' ) { return add_submenu_page( 'edit-comments.php', $page_title, $menu_title, $capability, $menu_slug, $function ); } /** * Remove a top level admin menu * * @since 3.1.0 * * @param string $menu_slug The slug of the menu * @return array|bool The removed menu on success, False if not found */ function remove_menu_page( $menu_slug ) { global $menu; foreach ( $menu as $i => $item ) { if ( $menu_slug == $item[2] ) { unset( $menu[$i] ); return $item; } } return false; } /** * Remove an admin submenu * * @since 3.1.0 * * @param string $menu_slug The slug for the parent menu * @param string $submenu_slug The slug of the submenu * @return array|bool The removed submenu on success, False if not found */ function remove_submenu_page( $menu_slug, $submenu_slug ) { global $submenu; if ( !isset( $submenu[$menu_slug] ) ) return false; foreach ( $submenu[$menu_slug] as $i => $item ) { if ( $submenu_slug == $item[2] ) { unset( $submenu[$menu_slug][$i] ); return $item; } } return false; } /** * Get the url to access a particular menu page based on the slug it was registered with. * * If the slug hasn't been registered properly no url will be returned * * @since 3.0 * * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu) * @param bool $echo Whether or not to echo the url - default is true * @return string the url */ function menu_page_url($menu_slug, $echo = true) { global $_parent_pages; if ( isset( $_parent_pages[$menu_slug] ) ) { $parent_slug = $_parent_pages[$menu_slug]; if ( $parent_slug && ! isset( $_parent_pages[$parent_slug] ) ) { $url = admin_url( add_query_arg( 'page', $menu_slug, $parent_slug ) ); } else { $url = admin_url( 'admin.php?page=' . $menu_slug ); } } else { $url = ''; } $url = esc_url($url); if ( $echo ) echo $url; return $url; } // // Pluggable Menu Support -- Private // function get_admin_page_parent( $parent = '' ) { global $parent_file; global $menu; global $submenu; global $pagenow; global $typenow; global $plugin_page; global $_wp_real_parent_file; global $_wp_menu_nopriv; global $_wp_submenu_nopriv; if ( !empty ( $parent ) && 'admin.php' != $parent ) { if ( isset( $_wp_real_parent_file[$parent] ) ) $parent = $_wp_real_parent_file[$parent]; return $parent; } /* if ( !empty ( $parent_file ) ) { if ( isset( $_wp_real_parent_file[$parent_file] ) ) $parent_file = $_wp_real_parent_file[$parent_file]; return $parent_file; } */ if ( $pagenow == 'admin.php' && isset( $plugin_page ) ) { foreach ( (array)$menu as $parent_menu ) { if ( $parent_menu[2] == $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; } } 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; } } 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( (array)$submenu ) as $parent) { foreach ( $submenu[$parent] as $submenu_array ) { if ( isset( $_wp_real_parent_file[$parent] ) ) $parent = $_wp_real_parent_file[$parent]; if ( !empty($typenow) && ($submenu_array[2] == "$pagenow?post_type=$typenow") ) { $parent_file = $parent; return $parent; } elseif ( $submenu_array[2] == $pagenow && empty($typenow) && ( empty($parent_file) || false === strpos($parent_file, '?') ) ) { $parent_file = $parent; return $parent; } else if ( isset( $plugin_page ) && ($plugin_page == $submenu_array[2] ) ) { $parent_file = $parent; return $parent; } } } if ( empty($parent_file) ) $parent_file = ''; return ''; } function get_admin_page_title() { global $title; global $menu; global $submenu; global $pagenow; global $plugin_page; global $typenow; if ( ! empty ( $title ) ) return $title; $hook = get_plugin_page_hook( $plugin_page, $pagenow ); $parent = $parent1 = get_admin_page_parent(); if ( empty ( $parent) ) { foreach ( (array)$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( $plugin_page ) && ( $plugin_page == $submenu_array[2] ) && ( ( $parent == $pagenow ) || ( $parent == $plugin_page ) || ( $plugin_page == $hook ) || ( $pagenow == 'admin.php' && $parent1 != $submenu_array[2] ) || ( !empty($typenow) && $parent == $pagenow . '?post_type=' . $typenow) ) ) { $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; } } } if ( empty ( $title ) ) { foreach ( $menu as $menu_array ) { if ( isset( $plugin_page ) && ( $plugin_page == $menu_array[2] ) && ( $pagenow == 'admin.php' ) && ( $parent1 == $menu_array[2] ) ) { $title = $menu_array[3]; return $menu_array[3]; } } } } return $title; } function get_plugin_page_hook( $plugin_page, $parent_page ) { $hook = get_plugin_page_hookname( $plugin_page, $parent_page ); if ( has_action($hook) ) return $hook; else return null; } function get_plugin_page_hookname( $plugin_page, $parent_page ) { global $admin_page_hooks; $parent = get_admin_page_parent( $parent_page ); $page_type = 'admin'; if ( empty ( $parent_page ) || 'admin.php' == $parent_page || isset( $admin_page_hooks[$plugin_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_type = $admin_page_hooks[$parent]; } $plugin_name = preg_replace( '!\.php!', '', $plugin_page ); return $page_type . '_page_' . $plugin_name; } function user_can_access_admin_page() { global $pagenow; global $menu; global $submenu; global $_wp_menu_nopriv; global $_wp_submenu_nopriv; global $plugin_page; global $_registered_pages; $parent = get_admin_page_parent(); if ( !isset( $plugin_page ) && isset( $_wp_submenu_nopriv[$parent][$pagenow] ) ) return false; if ( isset( $plugin_page ) ) { if ( isset( $_wp_submenu_nopriv[$parent][$plugin_page] ) ) return false; $hookname = get_plugin_page_hookname($plugin_page, $parent); if ( !isset($_registered_pages[$hookname]) ) 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; if ( isset( $plugin_page ) && isset( $_wp_menu_nopriv[$plugin_page] ) ) return false; foreach (array_keys( $_wp_submenu_nopriv ) as $key ) { if ( isset( $_wp_submenu_nopriv[$key][$pagenow] ) ) return false; if ( isset( $plugin_page ) && isset( $_wp_submenu_nopriv[$key][$plugin_page] ) ) return false; } return true; } if ( isset( $plugin_page ) && ( $plugin_page == $parent ) && isset( $_wp_menu_nopriv[$plugin_page] ) ) return false; 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 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; } /* Whitelist functions */ /** * Register a setting and its sanitization callback * * @since 2.7.0 * * @param string $option_group A settings group name. Should correspond to a whitelisted option key name. * Default whitelisted option key names include "general," "discussion," and "reading," among others. * @param string $option_name The name of an option to sanitize and save. * @param unknown_type $sanitize_callback A callback function that sanitizes the option's value. * @return unknown */ function register_setting( $option_group, $option_name, $sanitize_callback = '' ) { global $new_whitelist_options; if ( 'misc' == $option_group ) { _deprecated_argument( __FUNCTION__, '3.0', __( 'The miscellaneous options group has been removed. Use another settings group.' ) ); $option_group = 'general'; } $new_whitelist_options[ $option_group ][] = $option_name; if ( $sanitize_callback != '' ) add_filter( "sanitize_option_{$option_name}", $sanitize_callback ); } /** * Unregister a setting * * @since 2.7.0 * * @param unknown_type $option_group * @param unknown_type $option_name * @param unknown_type $sanitize_callback * @return unknown */ function unregister_setting( $option_group, $option_name, $sanitize_callback = '' ) { global $new_whitelist_options; if ( 'misc' == $option_group ) { _deprecated_argument( __FUNCTION__, '3.0', __( 'The miscellaneous options group has been removed. Use another settings group.' ) ); $option_group = 'general'; } $pos = array_search( $option_name, (array) $new_whitelist_options ); if ( $pos !== false ) unset( $new_whitelist_options[ $option_group ][ $pos ] ); if ( $sanitize_callback != '' ) remove_filter( "sanitize_option_{$option_name}", $sanitize_callback ); } /** * {@internal Missing Short Description}} * * @since 2.7.0 * * @param unknown_type $options * @return unknown */ function option_update_filter( $options ) { global $new_whitelist_options; if ( is_array( $new_whitelist_options ) ) $options = add_option_whitelist( $new_whitelist_options, $options ); return $options; } add_filter( 'whitelist_options', 'option_update_filter' ); /** * {@internal Missing Short Description}} * * @since 2.7.0 * * @param unknown_type $new_options * @param unknown_type $options * @return unknown */ function add_option_whitelist( $new_options, $options = '' ) { if ( $options == '' ) global $whitelist_options; else $whitelist_options = $options; foreach ( $new_options as $page => $keys ) { foreach ( $keys as $key ) { if ( !isset($whitelist_options[ $page ]) || !is_array($whitelist_options[ $page ]) ) { $whitelist_options[ $page ] = array(); $whitelist_options[ $page ][] = $key; } else { $pos = array_search( $key, $whitelist_options[ $page ] ); if ( $pos === false ) $whitelist_options[ $page ][] = $key; } } } return $whitelist_options; } /** * {@internal Missing Short Description}} * * @since 2.7.0 * * @param unknown_type $del_options * @param unknown_type $options * @return unknown */ function remove_option_whitelist( $del_options, $options = '' ) { if ( $options == '' ) global $whitelist_options; else $whitelist_options = $options; foreach ( $del_options as $page => $keys ) { foreach ( $keys as $key ) { if ( isset($whitelist_options[ $page ]) && is_array($whitelist_options[ $page ]) ) { $pos = array_search( $key, $whitelist_options[ $page ] ); if ( $pos !== false ) unset( $whitelist_options[ $page ][ $pos ] ); } } } return $whitelist_options; } /** * Output nonce, action, and option_page fields for a settings page. * * @since 2.7.0 * * @param string $option_group A settings group name. This should match the group name used in register_setting(). */ function settings_fields($option_group) { echo ""; echo ''; wp_nonce_field("$option_group-options"); } ?> wp-admin/includes/post.php0000644002347300047320000015433711656660357015460 0ustar vonfabpsaclncap->edit_others_posts ) ) { if ( 'page' == $post_data['post_type'] ) { return new WP_Error( 'edit_others_pages', $update ? __( 'You are not allowed to edit pages as this user.' ) : __( 'You are not allowed to create pages as this user.' ) ); } else { return new WP_Error( 'edit_others_posts', $update ? __( 'You are not allowed to edit posts as this user.' ) : __( 'You are not allowed to post as this user.' ) ); } } } // What to do based on which button they pressed if ( isset($post_data['saveasdraft']) && '' != $post_data['saveasdraft'] ) $post_data['post_status'] = 'draft'; if ( isset($post_data['saveasprivate']) && '' != $post_data['saveasprivate'] ) $post_data['post_status'] = 'private'; if ( isset($post_data['publish']) && ( '' != $post_data['publish'] ) && ( !isset($post_data['post_status']) || $post_data['post_status'] != 'private' ) ) $post_data['post_status'] = 'publish'; if ( isset($post_data['advanced']) && '' != $post_data['advanced'] ) $post_data['post_status'] = 'draft'; if ( isset($post_data['pending']) && '' != $post_data['pending'] ) $post_data['post_status'] = 'pending'; if ( isset( $post_data['ID'] ) ) $post_id = $post_data['ID']; else $post_id = false; $previous_status = $post_id ? get_post_field( 'post_status', $post_id ) : false; // Posts 'submitted for approval' present are submitted to $_POST the same as if they were being published. // Change status from 'publish' to 'pending' if user lacks permissions to publish or to resave published posts. if ( isset($post_data['post_status']) && ('publish' == $post_data['post_status'] && !current_user_can( $ptype->cap->publish_posts )) ) if ( $previous_status != 'publish' || !current_user_can( 'edit_post', $post_id ) ) $post_data['post_status'] = 'pending'; if ( ! isset($post_data['post_status']) ) $post_data['post_status'] = $previous_status; if (!isset( $post_data['comment_status'] )) $post_data['comment_status'] = 'closed'; if (!isset( $post_data['ping_status'] )) $post_data['ping_status'] = 'closed'; foreach ( array('aa', 'mm', 'jj', 'hh', 'mn') as $timeunit ) { if ( !empty( $post_data['hidden_' . $timeunit] ) && $post_data['hidden_' . $timeunit] != $post_data[$timeunit] ) { $post_data['edit_date'] = '1'; break; } } if ( !empty( $post_data['edit_date'] ) ) { $aa = $post_data['aa']; $mm = $post_data['mm']; $jj = $post_data['jj']; $hh = $post_data['hh']; $mn = $post_data['mn']; $ss = $post_data['ss']; $aa = ($aa <= 0 ) ? date('Y') : $aa; $mm = ($mm <= 0 ) ? date('n') : $mm; $jj = ($jj > 31 ) ? 31 : $jj; $jj = ($jj <= 0 ) ? date('j') : $jj; $hh = ($hh > 23 ) ? $hh -24 : $hh; $mn = ($mn > 59 ) ? $mn -60 : $mn; $ss = ($ss > 59 ) ? $ss -60 : $ss; $post_data['post_date'] = sprintf( "%04d-%02d-%02d %02d:%02d:%02d", $aa, $mm, $jj, $hh, $mn, $ss ); $post_data['post_date_gmt'] = get_gmt_from_date( $post_data['post_date'] ); } return $post_data; } /** * Update an existing post with values provided in $_POST. * * @since 1.5.0 * * @param array $post_data Optional. * @return int Post ID. */ function edit_post( $post_data = null ) { if ( empty($post_data) ) $post_data = &$_POST; $post_ID = (int) $post_data['post_ID']; $post = get_post( $post_ID ); $post_data['post_type'] = $post->post_type; $post_data['post_mime_type'] = $post->post_mime_type; $ptype = get_post_type_object($post_data['post_type']); if ( !current_user_can( $ptype->cap->edit_post, $post_ID ) ) { if ( 'page' == $post_data['post_type'] ) wp_die( __('You are not allowed to edit this page.' )); else wp_die( __('You are not allowed to edit this post.' )); } // Autosave shouldn't save too soon after a real save if ( 'autosave' == $post_data['action'] ) { $post =& get_post( $post_ID ); $now = time(); $then = strtotime($post->post_date_gmt . ' +0000'); $delta = AUTOSAVE_INTERVAL / 2; if ( ($now - $then) < $delta ) return $post_ID; } $post_data = _wp_translate_postdata( true, $post_data ); if ( is_wp_error($post_data) ) wp_die( $post_data->get_error_message() ); if ( 'autosave' != $post_data['action'] && 'auto-draft' == $post_data['post_status'] ) $post_data['post_status'] = 'draft'; if ( isset($post_data['visibility']) ) { switch ( $post_data['visibility'] ) { case 'public' : $post_data['post_password'] = ''; break; case 'password' : unset( $post_data['sticky'] ); break; case 'private' : $post_data['post_status'] = 'private'; $post_data['post_password'] = ''; unset( $post_data['sticky'] ); break; } } // Post Formats if ( current_theme_supports( 'post-formats' ) && isset( $post_data['post_format'] ) ) { $formats = get_theme_support( 'post-formats' ); if ( is_array( $formats ) ) { $formats = $formats[0]; if ( in_array( $post_data['post_format'], $formats ) ) { set_post_format( $post_ID, $post_data['post_format'] ); } elseif ( '0' == $post_data['post_format'] ) { set_post_format( $post_ID, false ); } } } // Meta Stuff if ( isset($post_data['meta']) && $post_data['meta'] ) { foreach ( $post_data['meta'] as $key => $value ) { if ( !$meta = get_post_meta_by_id( $key ) ) continue; if ( $meta->post_id != $post_ID ) continue; if ( is_protected_meta( $value['key'] ) ) continue; update_meta( $key, $value['key'], $value['value'] ); } } if ( isset($post_data['deletemeta']) && $post_data['deletemeta'] ) { foreach ( $post_data['deletemeta'] as $key => $value ) { if ( !$meta = get_post_meta_by_id( $key ) ) continue; if ( $meta->post_id != $post_ID ) continue; if ( is_protected_meta( $meta->meta_key ) ) continue; delete_meta( $key ); } } add_meta( $post_ID ); update_post_meta( $post_ID, '_edit_last', $GLOBALS['current_user']->ID ); wp_update_post( $post_data ); // 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 ); wp_set_post_lock( $post_ID, $GLOBALS['current_user']->ID ); if ( current_user_can( $ptype->cap->edit_others_posts ) ) { if ( ! empty( $post_data['sticky'] ) ) stick_post( $post_ID ); else unstick_post( $post_ID ); } return $post_ID; } /** * Process the post data for the bulk editing of posts. * * Updates all bulk edited posts/pages, adding (but not removing) tags and * categories. Skips pages when they would be their own parent or child. * * @since 2.7.0 * * @param array $post_data Optional, the array of post data to process if not provided will use $_POST superglobal. * @return array */ function bulk_edit_posts( $post_data = null ) { global $wpdb; if ( empty($post_data) ) $post_data = &$_POST; if ( isset($post_data['post_type']) ) $ptype = get_post_type_object($post_data['post_type']); else $ptype = get_post_type_object('post'); if ( !current_user_can( $ptype->cap->edit_posts ) ) { if ( 'page' == $ptype->name ) wp_die( __('You are not allowed to edit pages.')); else wp_die( __('You are not allowed to edit posts.')); } if ( -1 == $post_data['_status'] ) { $post_data['post_status'] = null; unset($post_data['post_status']); } else { $post_data['post_status'] = $post_data['_status']; } unset($post_data['_status']); $post_IDs = array_map( 'intval', (array) $post_data['post'] ); $reset = array( 'post_author', 'post_status', 'post_password', 'post_parent', 'page_template', 'comment_status', 'ping_status', 'keep_private', 'tax_input', 'post_category', 'sticky' ); foreach ( $reset as $field ) { if ( isset($post_data[$field]) && ( '' == $post_data[$field] || -1 == $post_data[$field] ) ) unset($post_data[$field]); } if ( isset($post_data['post_category']) ) { if ( is_array($post_data['post_category']) && ! empty($post_data['post_category']) ) $new_cats = array_map( 'absint', $post_data['post_category'] ); else unset($post_data['post_category']); } $tax_input = array(); if ( isset($post_data['tax_input'])) { foreach ( $post_data['tax_input'] as $tax_name => $terms ) { if ( empty($terms) ) continue; if ( is_taxonomy_hierarchical( $tax_name ) ) $tax_input[$tax_name] = array_map( 'absint', $terms ); else { $tax_input[$tax_name] = preg_replace( '/\s*,\s*/', ',', rtrim( trim($terms), ' ,' ) ); $tax_input[$tax_name] = explode(',', $tax_input[$tax_name]); } } } if ( isset($post_data['post_parent']) && ($parent = (int) $post_data['post_parent']) ) { $pages = $wpdb->get_results("SELECT ID, post_parent FROM $wpdb->posts WHERE post_type = 'page'"); $children = array(); for ( $i = 0; $i < 50 && $parent > 0; $i+