/** * Upgrade metadata. * * @param int $version */ function upgrade($version) { if ($version < 1) { // Upgrade from version 0 (closed source service) to version 1 (initial open source offering) $this->upgradeEcommerce(); $this->upgradeBookInformation(); $this->upgradeBook(); } if ($version < 3) { $this->upgradeCustomCss(); } if ($version < 4) { $this->fixDoubleSlashBug(); } if ($version < 5) { $this->changeDefaultBookCover(); } if ($version < 6 || $version < 7) { $this->makeThumbnailsForBookCover(); } if ($version < 8) { $this->resetLandingPage(); } if ($version < 10) { \PressBooks\Taxonomy\insert_terms(); flush_rewrite_rules(false); } }
/** * Set up default terms for Front Matter and Back Matter * Insert default part, chapter, front matter, and back matter * Insert default pages (Authors, Cover, TOC, About, Buy, and Access Denied) * Anything which needs to run on blog activation must go in this function */ private function wpmuActivate() { /** @var $wpdb \wpdb */ global $wpdb; \PressBooks\Taxonomy\insert_terms(); $posts = array(array('post_title' => __('Main Body', 'pressbooks'), 'post_name' => 'main-body', 'post_type' => 'part', 'menu_order' => 1), array('post_title' => __('Introduction', 'pressbooks'), 'post_name' => 'introduction', 'post_content' => __('This is where you can write your introduction.', 'pressbooks'), 'post_type' => 'front-matter', 'menu_order' => 1), array('post_title' => __('Chapter 1', 'pressbooks'), 'post_name' => 'chapter-1', 'post_content' => __('This is the first chapter in the main body of the text. You can change the text, rename the chapter, add new chapters, and add new parts.', 'pressbooks'), 'post_type' => 'chapter', 'menu_order' => 1), array('post_title' => __('Appendix', 'pressbooks'), 'post_name' => 'appendix', 'post_content' => __('This is where you can add appendices or other back matter.', 'pressbooks'), 'post_type' => 'back-matter', 'menu_order' => 1), array('post_title' => __('Authors', 'pressbooks'), 'post_name' => 'authors', 'post_type' => 'page'), array('post_title' => __('Cover', 'pressbooks'), 'post_name' => 'cover', 'post_type' => 'page'), array('post_title' => __('Table of Contents', 'pressbooks'), 'post_name' => 'table-of-contents', 'post_type' => 'page'), array('post_title' => __('About', 'pressbooks'), 'post_name' => 'about', 'post_type' => 'page'), array('post_title' => __('Buy', 'pressbooks'), 'post_name' => 'buy', 'post_type' => 'page'), array('post_title' => __('Access Denied', 'pressbooks'), 'post_name' => 'access-denied', 'post_content' => __('This book is private, and accessible only to registered users. If you have an account you can login <a href="/wp-login.php">here</a>. You can also set up your own Pressbooks book at: <a href="http://pressbooks.com">Pressbooks.com</a>.', 'pressbooks'), 'post_type' => 'page'), array('post_title' => __('Custom CSS for Ebook', 'pressbooks'), 'post_name' => 'epub', 'post_type' => 'custom-css'), array('post_title' => __('Custom CSS for PDF', 'pressbooks'), 'post_name' => 'prince', 'post_type' => 'custom-css'), array('post_title' => __('Custom CSS for Web', 'pressbooks'), 'post_name' => 'web', 'post_type' => 'custom-css')); $post = array('post_status' => 'publish', 'comment_status' => 'open', 'post_author' => $this->user_id); $page = array('post_status' => 'publish', 'comment_status' => 'closed', 'ping_status' => 'closed', 'post_content' => '<!-- Here be dragons.-->', 'post_author' => $this->user_id, 'tags_input' => __('Default Data', 'pressbooks')); update_option('blogdescription', __('Simple Book Production', 'pressbooks')); $parent_part = 0; $intro = 0; $appendix = 0; $chapter1 = 0; $query = "SELECT ID FROM {$wpdb->posts} WHERE post_title = %s AND post_type = %s AND post_name = %s AND post_status = 'publish' "; foreach ($posts as $item) { $exists = $wpdb->get_var($wpdb->prepare($query, array($item['post_title'], $item['post_type'], $item['post_name']))); if (empty($exists)) { if ($item['post_type'] == 'page') { $data = array_merge($item, $page); } else { $data = array_merge($item, $post); } $newpost = wp_insert_post($data, true); if (!is_wp_error($newpost)) { switch ($item['post_name']) { case 'cover': $this->opts['page_on_front'] = (int) $newpost; break; case 'table-of-contents': $this->opts['page_for_posts'] = (int) $newpost; break; } if ($item['post_type'] == 'part') { $parent_part = $newpost; } elseif ($item['post_type'] == 'chapter') { $my_post = array(); $my_post['ID'] = $newpost; $my_post['post_parent'] = $parent_part; wp_update_post($my_post); $chapter1 = $newpost; } elseif ($item['post_type'] == 'front-matter') { $intro = $newpost; } elseif ($item['post_type'] == 'back-matter') { $appendix = $newpost; } } else { trigger_error($newpost->get_error_message(), E_USER_ERROR); } } } // Apply 'introduction' front matter type to 'introduction' post wp_set_object_terms($intro, 'introduction', 'front-matter-type'); // Apply 'appendix' front matter type to 'appendix' post wp_set_object_terms($appendix, 'appendix', 'back-matter-type'); // Apply 'type-1' chapter type to 'chapter 1' post wp_set_object_terms($chapter1, 'type-1', 'chapter-type'); if (!wp_delete_comment(1, true)) { return; } $this->opts['pb_activated'] = time(); refresh_blog_details($this->blog_id); }