{
  "landingPage": "/wp-admin/index.php",
  "preferredVersions": {
    "php": "8.4",
    "wp": "latest"
  },
  "phpExtensionBundles": [
    "kitchen-sink"
  ],
  "steps": [
    {
      "step": "wp-cli",
      "command": "wp option update uploads_use_yearmonth_folders 0"
    },
    {
      "step": "wp-cli",
      "command": "wp media import https://jfgmedia.com/wp-content/uploads/gary.jpg"
    },
    {
      "step": "wp-cli",
      "command": "wp media import https://jfgmedia.com/wp-content/uploads/samantha.jpg"
    },
    {
      "step": "installPlugin",
      "pluginData": {
        "resource": "wordpress.org/plugins",
        "slug": "simple-local-avatars"
      },
      "options": {
        "activate": true
      }
    },
    {
      "step": "runPHP",
      "code": "<?php require '/wordpress/wp-load.php'; $user_id = wp_create_user('Samantha', 'mypass', 'myuser@localhost'); (new WP_User($user_id))->set_role('administrator'); $user_id = wp_create_user('Gary', 'mypass', 'gary@localhost'); (new WP_User($user_id))->set_role('administrator');"
    },
    {
      "step": "runPHP",
      "code": "<?php\nrequire_once '/wordpress/wp-load.php';\n\n// Configuration: Set your target User ID and the relative path from the domain root\n$user_id = 2;\n$relative_path = 'wp-content/uploads/samantha.jpg';\n\n// 1. Programmatically prepend the current dynamic absolute site domain url\n$image_url = site_url( '/' . ltrim($relative_path, '/') );\n\n// 2. Look up the database record attachment ID using the full absolute URL\n$attachment_id = attachment_url_to_postid($image_url);\n\nif ($attachment_id) {\n    // 3. Extract the clean full metadata image link array formatting\n    $image_src = wp_get_attachment_image_src($attachment_id, 'full');\n    \n    if ($image_src) {\n        $avatar_data = [\n            'media_id' => $attachment_id,\n            'full'     => $image_src\n        ];\n        \n        // 4. Update user configuration using Simple Local Avatars' expected schema\n        update_user_meta($user_id, 'simple_local_avatar', $avatar_data);\n    }\n}"
    },
    {
      "step": "runPHP",
      "code": "<?php\nrequire_once '/wordpress/wp-load.php';\n\n// Configuration: Set your target User ID and the relative path from the domain root\n$user_id = 3;\n$relative_path = 'wp-content/uploads/gary.jpg';\n\n// 1. Programmatically prepend the current dynamic absolute site domain url\n$image_url = site_url( '/' . ltrim($relative_path, '/') );\n\n// 2. Look up the database record attachment ID using the full absolute URL\n$attachment_id = attachment_url_to_postid($image_url);\n\nif ($attachment_id) {\n    // 3. Extract the clean full metadata image link array formatting\n    $image_src = wp_get_attachment_image_src($attachment_id, 'full');\n    \n    if ($image_src) {\n        $avatar_data = [\n            'media_id' => $attachment_id,\n            'full'     => $image_src\n        ];\n        \n        // 4. Update user configuration using Simple Local Avatars' expected schema\n        update_user_meta($user_id, 'simple_local_avatar', $avatar_data);\n    }\n}"
    },
    {
      "step": "installPlugin",
      "pluginData": {
        "resource": "wordpress.org/plugins",
        "slug": "sortable-dashboard-to-do-list"
      },
      "options": {
        "activate": true
      }
    },
    {
      "step": "runPHP",
      "code": "<?php require '/wordpress/wp-load.php'; global $wpdb; require_once ABSPATH . 'wp-admin/includes/upgrade.php'; $table = $wpdb->prefix . 'sdtdl'; $charset_collate = $wpdb->get_charset_collate(); $sql = \"CREATE TABLE $table ( ID int NOT NULL auto_increment, uniq_id varchar(10), title varchar(255), content longtext, added int, last_edited int, created_by int, assigned_to varchar(255), completed_by varchar(255), last_edited_by varchar(255), edition_allowed tinyint(1) DEFAULT 0, PRIMARY KEY (ID) ) $charset_collate;\"; dbDelta($sql);"
    },
    {
      "step": "runPHP",
      "code": "<?php require '/wordpress/wp-load.php'; global $wpdb; $time=time()-4*24*60*60; $data=['added'=>$time,'title'=>'Write a cool article','content'=>'Find time to write a cool article on that awesome topic we talked about with John','created_by'=>1,'uniq_id'=>'s7v0w7','last_edited_by'=>'admin']; $table = $wpdb->prefix . 'sdtdl'; $wpdb->insert($table, $data);"
    },
    {
      "step": "runPHP",
      "code": "<?php require '/wordpress/wp-load.php'; global $wpdb; $time=time()-15*24*60*60; $data=['added'=>$time,'title'=>'Fix CSS and JS errors','content'=>'Some CSS on the \\\"About\\\" page is off\nThere\\'s also some odd JS errors triggering on the contact form page\n<strong>STOP PROCRASTINATING!</strong>','created_by'=>1,'uniq_id'=>'s7v33z','last_edited_by'=>'admin']; $table = $wpdb->prefix . 'sdtdl'; $wpdb->insert($table, $data);"
    },
    {
      "step": "runPHP",
      "code": "<?php require '/wordpress/wp-load.php'; global $wpdb; $time=time();$data=['added'=>$time,'title'=>'Some other cool or boring stuff to do','content'=>'The following html tags are allowed:\n<ul>\n<li>p</li>\n<li>span</li>\n<li><a href=\"#\">a</a></li>\n<li><strong>strong</strong></li>\n<li><em>em</em></li>\n<li><u>u</u></li>\n<li>ul, ol, &amp; li</li>\n</ul>','created_by'=>1,'uniq_id'=>'s9xe4c','last_edited_by'=>'admin']; $table = $wpdb->prefix . 'sdtdl'; $wpdb->insert($table, $data);"
    },
    {
      "step": "runPHP",
      "code": "<?php require '/wordpress/wp-load.php'; global $wpdb; $time=time()-5*24*60*60; $data=['added'=>$time,'title'=>'Urgent!','content'=>'Could you please go through last month\\'s invoices? Thanks!','created_by'=>2,'assigned_to'=>'{1}','completed_by'=>'a:1:{i:1;i:1727529750;}','uniq_id'=>'s9ee4c','last_edited_by'=>'Samantha']; $table = $wpdb->prefix . 'sdtdl'; $wpdb->insert($table, $data);"
    },
    {
      "step": "runPHP",
      "code": "<?php require '/wordpress/wp-load.php'; global $wpdb; $time=time()-1*24*60*60;$data=['added'=>$time,'title'=>'Update plugin documentation','content'=>'Write clear and concise documentation for the current release, including setup steps, feature notes, and any recent changes.','created_by'=>2,'assigned_to'=>'{1}','uniq_id'=>'s9et4c','last_edited_by'=>'Samantha','edition_allowed' => 1]; $table = $wpdb->prefix . 'sdtdl'; $wpdb->insert($table, $data);"
    },
    {
      "step": "runPHP",
      "code": "<?php require '/wordpress/wp-load.php'; global $wpdb; $time=time()-8*24*60*60;$data=['added'=>$time,'title'=>'New feature needed','content'=>'Following our phone conversation, it would be awesome if we could also send mail notifications to the users!','created_by'=>3,'assigned_to'=>'{1}','uniq_id'=>'s9ep4c','last_edited_by'=>'Gary']; $table = $wpdb->prefix . 'sdtdl'; $wpdb->insert($table, $data);"
    },
    {
      "step": "runPHP",
      "code": "<?php require '/wordpress/wp-load.php'; global $wpdb; $data=['added'=>1727429436,'title'=>'Proofreading task','content'=>'Steve wrote a new article. Could you please proofread it before publication?','created_by'=>1,'assigned_to'=>'{2}','completed_by'=>'a:1:{i:2;i:1727529750;}','uniq_id'=>'syee4c','last_edited_by'=>'admin']; $table = $wpdb->prefix . 'sdtdl'; $wpdb->insert($table, $data);"
    },
    {
      "step": "runPHP",
      "code": "<?php require '/wordpress/wp-load.php'; global $wpdb; $time=time()-8*24*60*60; $data=['added'=>$time,'last_edited'=>$time+2*24*60*60,'title'=>'Design rework','content'=>'We need to improve the layout of the category pages. It needs to be modernized. Could you please provide some suggestions?\nGary: Yeah, I\\'ll try to get back to you in a few days with some ideas.','created_by'=>1,'assigned_to'=>'{3}','uniq_id'=>'syeh4c','last_edited_by'=>'Gary','edition_allowed'=>1]; $table = $wpdb->prefix . 'sdtdl'; $wpdb->insert($table, $data);"
    },
    {
      "step": "login",
      "username": "admin",
      "password": "password"
    },
    {
      "step": "setSiteOptions",
      "options": {
        "sdtdl_todo_list_items": {
          "1": {
            "data": [
              {
                "front": "true",
                "id": "s7v0w7"
              },
              {
                "front": "true",
                "id": "s7v33z"
              },
              {
                "front": "true",
                "id": "s9xe4c"
              },
              {
                "front": "false",
                "id": "syee4c"
              },
              {
                "front": "false",
                "id": "syeh4c"
              }
            ],
            "extra": {
              "front": "true",
              "side": "left",
              "task-aging": "true",
              "task-old": "true"
            }
          },
          "db_version": 5
        }
      }
    },
    {
      "step": "updateUserMeta",
      "meta": {
        "metaboxhidden_dashboard": [
          "dashboard_right_now",
          "dashboard_site_health",
          "dashboard_quick_press",
          "dashboard_primary",
          "dashboard_activity"
        ],
        "show_welcome_panel": "0"
      },
      "userId": 1
    }
  ]
}
