get marked as conflicted. Maybe we should say for certain files "if they're
gone, they're gone forever"? What is the proper resolution?
-- wizard install wordpress should ask for password. One problem with this is that
- Wordpress will still send mail with the wrong username and password, so Wordpress
- will need to be patched to not do that. Alternatively we can initally set the admin
- email to a null address and then fix it manually.
- Parse output HTML for class="error" and give those errors back to the user (done),
then boot them back into configure so they can enter in something different
import logging
import distutils
import urlparse
+import hashlib
from wizard import app, install, resolve, sql, util
from wizard.app import php
extractors.update(php.extractors)
substitutions = app.make_substitutions(seed)
substitutions.update(php.substitutions)
- install_schema = install.ArgSchema("db", "email", "title")
+ install_schema = install.ArgSchema("db", "admin", "email", "title")
deprecated_keys = set(['WIZARD_SECRETKEY'])
random_keys = set(['WIZARD_SECRETKEY', 'WIZARD_AUTH_KEY', 'WIZARD_SECURE_AUTH_KEY', 'WIZARD_LOGGED_IN_KEY', 'WIZARD_NONCE_KEY'])
def download(self, version):
}
old_mode = os.stat(".").st_mode
os.chmod(".", 0777) # XXX: squick squick
+
+ # we need to disable the wp_mail function in wp-includes/pluggable[-functions].php
+ pluggable_path = os.path.exists('wp-includes/pluggable.php') and 'wp-includes/pluggable.php' or 'wp-includes/pluggable-functions.php'
+ pluggable = open(pluggable_path, 'r').read()
+ wp_mail_noop = "<?php function wp_mail( $to, $subject, $message, $headers = '', $attachments = array() ) { /*noop*/ } ?> \n\n"
+ pluggable_file = open(pluggable_path,'w')
+ pluggable_file.write(wp_mail_noop)
+ pluggable_file.write(pluggable)
+ pluggable_file.close()
+
result = install.fetch(options, "wp-admin/setup-config.php?step=2", post_setup_config)
logging.debug("setup-config.php output\n\n" + result)
result = install.fetch(options, "wp-admin/install.php?step=2", post_install)
wp_options.update().where(wp_options.c.option_name == 'siteurl').values(option_value=options.web_path).execute()
wp_options.update().where(wp_options.c.option_name == 'home').values(option_value="http://%s%s" % (options.web_host, options.web_path)).execute() # XXX: what if missing leading slash; this should be put in a function
# should also set the username and admin password
+
+ wp_users = meta.tables["wp_users"]
+ hashed_pass = hashlib.md5(options.admin_password).hexdigest()
+ wp_users.update().where(wp_users.c.ID == 1).values(user_login=options.admin_name,user_nicename=options.admin_name,display_name=options.admin_name,user_pass=hashed_pass).execute()
+ wp_usermeta = meta.tables["wp_usermeta"]
+ wp_usermeta.delete().where(wp_usermeta.c.user_id==1 and wp_usermeta.c.meta_key == "default_password_nag").execute()
+
+ # now we can restore the wp_mail function in wp-includes/pluggable[-functions].php
+ pluggable_file = open(pluggable_path,'w')
+ pluggable_file.write(pluggable)
+ pluggable_file.close()
+
php.ini_replace_vars()
def upgrade(self, d, version, options):
result = d.fetch("wp-admin/upgrade.php?step=1")