public function find_missing_pages() { $plugin_pages = awpcp_get_plugin_pages_info(); $registered_pages = array_keys(awpcp_pages()); $referenced_pages = array_keys($plugin_pages); // pages that are registered in the code but no referenced in the DB $pages_not_referenced = array_diff($registered_pages, $referenced_pages); $registered_pages_ids = awpcp_get_page_ids_by_ref($registered_pages); $query = 'SELECT posts.ID post, posts.post_status status '; $query .= 'FROM ' . $this->db->posts . ' AS posts '; $query .= "WHERE posts.ID IN (" . join(",", $registered_pages_ids) . ") "; $existing_pages = $this->db->get_results($query, OBJECT_K); $missing_pages = array('not-found' => array(), 'not-published' => array(), 'not-referenced' => array()); foreach ($plugin_pages as $page_ref => $page_info) { $page = isset($existing_pages[$page_info['page_id']]) ? $existing_pages[$page_info['page_id']] : null; if (is_object($page) && isset($page->status) && $page->status != 'publish') { $page->page = $page_ref; $page->id = $page_info['page_id']; $missing_pages['not-published'][] = $page; } else { if (is_null($page)) { $page = new stdClass(); $page->page = $page_ref; $page->id = $page_info['page_id']; $page->post = null; $page->status = null; $missing_pages['not-found'][] = $page; } } } // if a page is registered in the code but there is no reference of it // in the database, include a dummy object to represent it. foreach ($pages_not_referenced as $page) { $item = new stdClass(); $item->page = $page; $item->id = null; $item->post = null; $item->status = null; $missing_pages['not-referenced'][] = $item; } return $missing_pages; }
/** * Renders an HTML page with AWPCP informaiton useful for debugging tasks. * * @since 2.0.7 */ private function render($download = false) { global $awpcp, $wpdb, $wp_rewrite; $debug_info = $this; $options = $awpcp->settings->options; $options['awpcp_installationcomplete'] = get_option('awpcp_installationcomplete'); $options['awpcp_pagename_warning'] = get_option('awpcp_pagename_warning'); $options['widget_awpcplatestads'] = get_option('widget_awpcplatestads'); $options['awpcp_db_version'] = get_option('awpcp_db_version'); $plugin_pages_info = awpcp_get_plugin_pages_info(); $page_objects = get_pages(array('include' => awpcp_get_properties($plugin_pages_info, 'page_id', 0))); $plugin_pages = array(); foreach ($page_objects as $page) { $plugin_pages[$page->ID] = $page; } $rules = (array) $wp_rewrite->wp_rewrite_rules(); ob_start(); include AWPCP_DIR . '/admin/templates/admin-panel-debug.tpl.php'; $content = ob_get_contents(); ob_end_clean(); return $content; }
private function upgrade_to_3_5_3($oldversion) { global $wpdb; $plugin_pages = awpcp_get_plugin_pages_info(); if (empty($plugin_pages)) { // move plugin pages info from PAGES table to awpcp-plugin-pages option $pages = $wpdb->get_results('SELECT page, id FROM ' . AWPCP_TABLE_PAGES, OBJECT_K); foreach ($pages as $page_ref => $page_info) { awpcp_update_plugin_page_id($page_ref, $page_info->id); } } // make sure there are entries for 'view-categories-page-name' in the plugin pages info $plugin_pages = awpcp_get_plugin_pages_info(); if (isset($plugin_pages['view-categories-page-name'])) { unset($plugin_pages['view-categories-page-name']); awpcp_update_plugin_pages_info($plugin_pages); } // drop no longer used PAGENAME table $wpdb->query('DROP TABLE IF EXISTS ' . AWPCP_TABLE_PAGENAME); }
/** * @since 3.5.3 */ function awpcp_update_plugin_page_id($page_ref, $page_id) { $plugin_pages_info = awpcp_get_plugin_pages_info(); $plugin_pages_info[$page_ref] = array('page_id' => $page_id); return awpcp_update_plugin_pages_info($plugin_pages_info); }