public function restore_missing_pages() { $shortcodes = awpcp_pages(); $missing_pages = $this->missing_pages_finder->find_missing_pages(); $pages_to_restore = array_merge($missing_pages['not-found'], $missing_pages['not-referenced']); $page_refs = awpcp_get_properties($pages_to_restore, 'page'); // If we are restoring the main page, let's do it first! if (($p = array_search('main-page-name', $page_refs)) !== FALSE) { // put the main page as the first page to restore array_splice($pages_to_restore, 0, 0, array($pages_to_restore[$p])); array_splice($pages_to_restore, $p + 1, 1); } $restored_pages = array(); foreach ($pages_to_restore as $page) { $refname = $page->page; $name = get_awpcp_option($refname); if (strcmp($refname, 'main-page-name') == 0) { awpcp_create_pages($name, $subpages = false); } else { awpcp_create_subpage($refname, $name, $shortcodes[$refname][1]); } $restored_pages[] = $page; } update_option('awpcp-flush-rewrite-rules', true); return $restored_pages; }
private function upgrade_to_2_0_5($version) { global $wpdb, $awpcp; $translations = array('userpagename' => 'main-page-name', 'showadspagename' => 'show-ads-page-name', 'placeadpagename' => 'place-ad-page-name', 'editadpagename' => 'edit-ad-page-name', 'page-name-renew-ad' => 'renew-ad-page-name', 'replytoadpagename' => 'reply-to-ad-page-name', 'browseadspagename' => 'browse-ads-page-name', 'searchadspagename' => 'search-ads-page-name', 'browsecatspagename' => 'browse-categories-page-name', 'categoriesviewpagename' => 'view-categories-page-name', 'paymentthankyoupagename' => 'payment-thankyou-page-name', 'paymentcancelpagename' => 'payment-cancel-page-name'); // Users who upgraded from 1.8.9.4 to 2.0.4 have an installation // with no AWPCP pages. The pages exist, but are not recognized // by the plugin. foreach ($translations as $old => $new) { $page_id = awpcp_get_page_id_by_ref($new); if ($page_id > 0) { continue; } // Let's try to find the pages using the old AND new names foreach (array($old, $new) as $option) { // The setting doesn't exist. Nothing to do. $name = $awpcp->settings->get_option($option, null); if ($name == null) { continue; } $sanitized = sanitize_title($name); $sql = "SELECT ID FROM {$wpdb->posts} WHERE post_name = %s AND post_type = 'page'"; $id = intval($wpdb->get_var($wpdb->prepare($sql, $sanitized))); $id = $id > 0 ? $id : -1; awpcp_update_plugin_page_id($new, $id); if ($id > 0) { $awpcp->settings->update_option($new, $name, true); break; } } } // Since pages automatic creation is not enabled, we need to create the // Renew Ad page manually. awpcp_create_subpage('renew-ad-page-name', $awpcp->settings->get_option('renew-ad-page-name'), '[AWPCP-RENEW-AD]'); }
function awpcp_create_subpages($awpcp_page_id) { $pages = awpcp_subpages(); foreach ($pages as $key => $page) { awpcp_create_subpage($key, $page[0], $page[1], $awpcp_page_id); } do_action('awpcp_create_subpage'); }