WordpressSetup.php 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. <?php
  2. require_once("BaseSetup.php");
  3. class WordpressSetup extends BaseSetup {
  4. protected $appname = 'wordpress';
  5. protected $config = [
  6. 'form' => [
  7. //'protocol' => [
  8. // 'type' => 'select',
  9. // 'options' => ['http','https'],
  10. //],
  11. 'site_name' => ['type'=>'text', 'value'=>'Wordpress Blog'],
  12. 'site_description' => ['value'=>'Another wordpresss site'],
  13. 'wordpress_account_username' => ['value'=>'wpadmin'],
  14. 'wordpress_account_email' => 'text',
  15. 'wordpress_account_password' => 'password',
  16. ],
  17. 'database' => true,
  18. 'resources' => [
  19. 'archive' => [ 'src' => 'https://wordpress.org/wordpress-5.2.2.tar.gz' ],
  20. ],
  21. ];
  22. public function install(array $options) : bool {
  23. parent::install($options);
  24. $this->appcontext->runUser('v-open-fs-file',[$this->getDocRoot("wp-config-sample.php")], $result);
  25. $distconfig = preg_replace( [
  26. '/database_name_here/', '/username_here/', '/password_here/'
  27. ], [
  28. $this->appcontext->user() . '_' . $options['database_name'],
  29. $this->appcontext->user() . '_' . $options['database_user'],
  30. $options['database_password']
  31. ],
  32. $result->text);
  33. while (strpos($distconfig, 'put your unique phrase here') !== false) {
  34. $distconfig = preg_replace( '/put your unique phrase here/', generate_string(64), $distconfig, 1);
  35. }
  36. $tmp_configpath = $this->appcontext->saveTempFile($distconfig);
  37. if(!$this->appcontext->runUser('v-copy-fs-file',[$tmp_configpath, $this->getDocRoot("wp-config.php")], $result)) {
  38. return false;
  39. }
  40. exec("/usr/bin/curl --post301 --insecure --resolve ".$this->domain.":80:".$this->appcontext->getWebDomainIp($this->domain)." "
  41. . escapeshellarg("http://".$this->domain."/wp-admin/install.php?step=2")
  42. . " -d " . escapeshellarg(
  43. "weblog_title=" . rawurlencode($options['site_name'])
  44. . "&user_name=" . rawurlencode($options['wordpress_account_username'])
  45. . "&admin_password=" . rawurlencode($options['wordpress_account_password'])
  46. . "&admin_password2=". rawurlencode($options['wordpress_account_password'])
  47. . "&admin_email=" . rawurlencode($options['wordpress_account_email'])), $output, $return_var);
  48. return ($return_var === 0);
  49. }
  50. }