本文整理匯總了PHP中Pressbooks\Book::consolidatePost方法的典型用法代碼示例。如果您正苦於以下問題:PHP Book::consolidatePost方法的具體用法?PHP Book::consolidatePost怎麽用?PHP Book::consolidatePost使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類Pressbooks\Book
的用法示例。
在下文中一共展示了Book::consolidatePost方法的8個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的PHP代碼示例。
示例1: Array
/**
* Imports user selected chapters from an instance of PB
*
* @param array $chapters
* Array(
[5] => Array(
[222] => chapter
)
[14] => Array(
[164] => front-matter
)
)
* @return type
*/
function import(array $chapters)
{
$this->chapters = $chapters;
$chapters_to_import = $this->getChapters();
libxml_use_internal_errors(true);
foreach ($chapters_to_import as $new_post) {
// Load HTMl snippet into DOMDocument using UTF-8 hack
$utf8_hack = '<?xml version="1.0" encoding="UTF-8"?>';
$doc = new \DOMDocument();
$doc->loadHTML($utf8_hack . $new_post['post_content']);
// Download images, change image paths
$doc = $this->scrapeAndKneadImages($doc);
$html = $doc->saveXML($doc->documentElement);
// Remove auto-created <html> <body> and <!DOCTYPE> tags.
$html = preg_replace('/^<!DOCTYPE.+?>/', '', str_replace(array('<html>', '</html>', '<body>', '</body>'), array('', '', '', ''), $html));
$import_post = array('post_title' => $new_post['post_title'], 'post_content' => $html, 'post_type' => $new_post['post_type'], 'post_status' => $new_post['post_status']);
// set post parent
if ('chapter' == $new_post['post_type']) {
$post_parent = $this->getChapterParent();
$import_post['post_parent'] = $post_parent;
}
// woot, woot!
$pid = wp_insert_post($import_post);
// check for errors, redirect and record
if (is_wp_error($pid)) {
error_log('\\PBT\\Import\\PBImport()->import error at `wp_insert_post()`: ' . $pid->get_error_message());
\PBT\Search\ApiSearch::revokeCurrentImport();
\Pressbooks\Redirect\location(get_bloginfo('url') . '/wp-admin/admin.php?page=api_search_import');
}
// set post metadata
$this->setPostMeta($pid, $new_post);
\Pressbooks\Book::consolidatePost($pid, get_post($pid));
}
return \PBT\Search\ApiSearch::revokeCurrentImport();
}
示例2: import
/**
* @param array $current_import
*/
function import(array $current_import)
{
try {
$imscc = new IMSCCParser($current_import['file']);
} catch (\Exception $e) {
return FALSE;
}
$items = $imscc->manifestGetItems();
$match_ids = array_flip(array_keys($current_import['chapters']));
$total = 0;
if (!empty($items)) {
$current_post_parent = -1;
foreach ($items as $id => $item) {
// Skip
if (!$this->flaggedForImport($id)) {
continue;
}
if (!isset($match_ids[$id])) {
continue;
}
$post_type = $this->determinePostType($id);
$new_post = array('post_title' => wp_strip_all_tags($item['title']), 'post_type' => $post_type, 'post_status' => 'part' == $post_type ? 'publish' : 'draft');
if ('part' != $post_type) {
$new_post['post_content'] = $imscc->getContent($id);
}
if ('chapter' == $post_type) {
if ($current_post_parent == -1) {
$new_post['post_parent'] = $this->getChapterParent();
} else {
$new_post['post_parent'] = $current_post_parent;
}
}
$pid = wp_insert_post(add_magic_quotes($new_post));
//store part post ID to use as parent for subsequent chapters
if ('part' == $post_type) {
$current_post_parent = $pid;
}
// @todo postmeta like author
update_post_meta($pid, 'pb_show_title', 'on');
update_post_meta($pid, 'pb_export', 'on');
if ('part' == $post_type && $imscc->getContent($id)) {
update_post_meta($pid, 'pb_part_content', $imscc->getContent($id));
}
Book::consolidatePost($pid, get_post($pid));
++$total;
}
}
// Done
$_SESSION['pb_notices'][] = sprintf(__('Imported %d chapters.', 'pressbooks'), $total);
$imscc->cleanUp();
return $this->revokeCurrentImport();
}
示例3: kneadandInsert
/**
* Pummel then insert HTML into our database
*
* @param string $href
* @param string $post_type
* @param int $chapter_parent
* @param string $domain domain name of the webpage
*/
function kneadandInsert($html, $post_type, $chapter_parent, $domain)
{
$matches = array();
$meta = $this->getLicenseAttribution($html);
$author = isset($meta['authors']) ? $meta['authors'] : $this->getAuthors($html);
$license = isset($meta['license']) ? $this->extractCCLicense($meta['license']) : '';
// get the title, preference to title set by PB
preg_match('/<h2 class="entry-title">(.*)<\\/h2>/', $html, $matches);
if (!empty($matches[1])) {
$title = wp_strip_all_tags($matches[1]);
} else {
preg_match('/<title>(.+)<\\/title>/', $html, $matches);
$title = !empty($matches[1]) ? wp_strip_all_tags($matches[1]) : '__UNKNOWN__';
}
// just get the body
preg_match('/(?:<body[^>]*>)(.*)<\\/body>/isU', $html, $matches);
// get rid of stuff we don't need
$body = $this->regexSearchReplace($matches[1]);
// clean it up
$xhtml = $this->tidy($body);
$body = $this->kneadHtml($xhtml, $post_type, $domain);
$new_post = array('post_title' => $title, 'post_content' => $body, 'post_type' => $post_type, 'post_status' => 'draft');
if ('chapter' == $post_type) {
$new_post['post_parent'] = $chapter_parent;
}
$pid = wp_insert_post(add_magic_quotes($new_post));
if (!empty($author)) {
update_post_meta($pid, 'pb_section_author', $author);
}
if (!empty($license)) {
update_post_meta($pid, 'pb_section_license', $license);
}
update_post_meta($pid, 'pb_show_title', 'on');
update_post_meta($pid, 'pb_export', 'on');
Book::consolidatePost($pid, get_post($pid));
// Reorder
}
示例4: kneadAndInsert
/**
* Pummel then insert HTML into our database
*
* @param string $html
* @param string $title
* @param string $post_type (front-matter', 'chapter', 'back-matter')
* @param int $chapter_parent
*/
protected function kneadAndInsert($html, $title, $post_type, $chapter_parent)
{
$body = $this->tidy($html);
$body = $this->kneadHTML($body);
$title = wp_strip_all_tags($title);
$new_post = array('post_title' => $title, 'post_content' => $body, 'post_type' => $post_type, 'post_status' => 'draft');
if ('chapter' == $post_type) {
$new_post['post_parent'] = $chapter_parent;
}
$pid = wp_insert_post(add_magic_quotes($new_post));
update_post_meta($pid, 'pb_show_title', 'on');
update_post_meta($pid, 'pb_export', 'on');
Book::consolidatePost($pid, get_post($pid));
// Reorder
}
示例5: import
/**
* @param array $current_import
*
* @return bool
*/
function import(array $current_import)
{
try {
$parser = new Parser();
$xml = $parser->parse($current_import['file']);
} catch (\Exception $e) {
return false;
}
$this->pbCheck($xml);
if ($this->isPbWxr) {
$xml['posts'] = $this->customNestedSort($xml['posts']);
}
$match_ids = array_flip(array_keys($current_import['chapters']));
$chapter_parent = $this->getChapterParent();
$total = 0;
libxml_use_internal_errors(true);
foreach ($xml['posts'] as $p) {
// Skip
if (!$this->flaggedForImport($p['post_id'])) {
continue;
}
if (!isset($match_ids[$p['post_id']])) {
continue;
}
// Insert
$post_type = $this->determinePostType($p['post_id']);
// Load HTMl snippet into DOMDocument using UTF-8 hack
$utf8_hack = '<?xml version="1.0" encoding="UTF-8"?>';
$doc = new \DOMDocument();
$doc->loadHTML($utf8_hack . $this->tidy($p['post_content']));
// Download images, change image paths
$doc = $this->scrapeAndKneadImages($doc);
$html = $doc->saveXML($doc->documentElement);
// Remove auto-created <html> <body> and <!DOCTYPE> tags.
$html = preg_replace('/^<!DOCTYPE.+?>/', '', str_replace(array('<html>', '</html>', '<body>', '</body>'), array('', '', '', ''), $html));
if ('metadata' == $post_type) {
$pid = $this->bookInfoPid();
} else {
$pid = $this->insertNewPost($post_type, $p, $html, $chapter_parent);
if ('part' == $post_type) {
$chapter_parent = $pid;
}
}
if (isset($p['postmeta']) && is_array($p['postmeta'])) {
$this->importPbPostMeta($pid, $post_type, $p);
}
Book::consolidatePost($pid, get_post($pid));
// Reorder
++$total;
}
$errors = libxml_get_errors();
// TODO: Handle errors gracefully
libxml_clear_errors();
// Done
$_SESSION['pb_notices'][] = sprintf(__('Imported %s chapters.', 'pressbooks'), $total);
return $this->revokeCurrentImport();
}
示例6: kneadAndInsert
/**
* Pummel then insert HTML into our database
*
* @param string $href
* @param string $post_type
* @param int $chapter_parent
*/
protected function kneadAndInsert($href, $post_type, $chapter_parent)
{
$html = $this->getZipContent($href, false);
$matches = array();
preg_match('/(?:<title[^>]*>)(.+)<\\/title>/isU', $html, $matches);
$title = !empty($matches[1]) ? wp_strip_all_tags($matches[1]) : '__UNKNOWN__';
preg_match('/(?:<body[^>]*>)(.*)<\\/body>/isU', $html, $matches);
$body = $this->tidy(@$matches[1]);
$body = $this->kneadHtml($body, $post_type, $href);
$new_post = array('post_title' => $title, 'post_content' => $body, 'post_type' => $post_type, 'post_status' => 'draft');
if ('chapter' == $post_type) {
$new_post['post_parent'] = $chapter_parent;
}
$pid = wp_insert_post(add_magic_quotes($new_post));
update_post_meta($pid, 'pb_show_title', 'on');
update_post_meta($pid, 'pb_export', 'on');
Book::consolidatePost($pid, get_post($pid));
// Reorder
}
示例7: import
/**
* @param array $current_import
*
* @return bool
*/
function import(array $current_import)
{
try {
$parser = new Parser();
$xml = $parser->parse($current_import['file']);
} catch (\Exception $e) {
return false;
}
$this->pbCheck($xml);
if ($this->isPbWxr) {
$xml['posts'] = $this->customNestedSort($xml['posts']);
}
$match_ids = array_flip(array_keys($current_import['chapters']));
$chapter_parent = $this->getChapterParent();
$total = 0;
libxml_use_internal_errors(true);
foreach ($xml['posts'] as $p) {
// Skip
if (!$this->flaggedForImport($p['post_id'])) {
continue;
}
if (!isset($match_ids[$p['post_id']])) {
continue;
}
// Insert
$post_type = $this->determinePostType($p['post_id']);
// Load HTMl snippet into DOMDocument using UTF-8 hack
$utf8_hack = '<?xml version="1.0" encoding="UTF-8"?>';
$doc = new \DOMDocument();
$doc->loadHTML($utf8_hack . $this->tidy($p['post_content']));
// Download images, change image paths
$doc = $this->scrapeAndKneadImages($doc);
$html = $doc->saveXML($doc->documentElement);
// Remove auto-created <html> <body> and <!DOCTYPE> tags.
$html = preg_replace('/^<!DOCTYPE.+?>/', '', str_replace(array('<html>', '</html>', '<body>', '</body>'), array('', '', '', ''), $html));
$new_post = array('post_title' => wp_strip_all_tags($p['post_title']), 'post_type' => $post_type, 'post_status' => 'part' == $post_type ? 'publish' : 'draft');
if ('part' != $post_type) {
$new_post['post_content'] = $html;
}
if ('chapter' == $post_type) {
$new_post['post_parent'] = $chapter_parent;
}
$pid = wp_insert_post(add_magic_quotes($new_post));
if ('part' == $post_type) {
$chapter_parent = $pid;
}
$meta_to_update = apply_filters('pb_import_metakeys', array('pb_section_author', 'pb_section_license', 'pb_short_title', 'pb_subtitle'));
if (isset($p['postmeta']) && is_array($p['postmeta'])) {
foreach ($meta_to_update as $meta_key) {
$meta_val = $this->searchForMetaValue($meta_key, $p['postmeta']);
if (is_serialized($meta_val)) {
$meta_val = unserialize($meta_val);
}
if ($meta_val) {
update_post_meta($pid, $meta_key, $meta_val);
}
}
if ('part' == $post_type) {
$part_content = $this->searchForPartContent($p['postmeta']);
if ($part_content) {
update_post_meta($pid, 'pb_part_content', $part_content);
}
}
}
update_post_meta($pid, 'pb_show_title', 'on');
update_post_meta($pid, 'pb_export', 'on');
Book::consolidatePost($pid, get_post($pid));
// Reorder
++$total;
}
// Done
$_SESSION['pb_notices'][] = sprintf(__('Imported %s chapters.', 'pressbooks'), $total);
return $this->revokeCurrentImport();
}
示例8: import
/**
* @param array $current_import
*
* @return bool
*/
function import(array $current_import)
{
try {
$parser = new Parser();
$xml = $parser->parse($current_import['file']);
} catch (\Exception $e) {
return false;
}
$this->pbCheck($xml);
if ($this->isPbWxr) {
$xml['posts'] = $this->customNestedSort($xml['posts']);
}
$match_ids = array_flip(array_keys($current_import['chapters']));
$chapter_parent = $this->getChapterParent();
$total = 0;
$taxonomies = apply_filters('pb_import_custom_taxonomies', array('front-matter-type', 'chapter-type', 'back-matter-type'));
$custom_post_types = apply_filters('pb_import_custom_post_types', array());
// set custom terms...
$terms = apply_filters('pb_import_custom_terms', $xml['terms']);
// and import them if they don't already exist.
foreach ($terms as $t) {
$term = term_exists($t['term_name'], $t['term_taxonomy']);
if (null === $term || 0 === $term) {
wp_insert_term($t['term_name'], $t['term_taxonomy'], array('description' => $t['term_description'], 'slug' => $t['slug']));
}
}
libxml_use_internal_errors(true);
foreach ($xml['posts'] as $p) {
// Skip
if (!$this->flaggedForImport($p['post_id'])) {
continue;
}
if (!isset($match_ids[$p['post_id']])) {
continue;
}
// Insert
$post_type = $this->determinePostType($p['post_id']);
// Load HTMl snippet into DOMDocument using UTF-8 hack
$utf8_hack = '<?xml version="1.0" encoding="UTF-8"?>';
$doc = new \DOMDocument();
$doc->loadHTML($utf8_hack . $this->tidy($p['post_content']));
// Download images, change image paths
$doc = $this->scrapeAndKneadImages($doc);
$html = $doc->saveXML($doc->documentElement);
// Remove auto-created <html> <body> and <!DOCTYPE> tags.
$html = preg_replace('/^<!DOCTYPE.+?>/', '', str_replace(array('<html>', '</html>', '<body>', '</body>'), array('', '', '', ''), $html));
if ('metadata' == $post_type) {
$pid = $this->bookInfoPid();
} else {
$pid = $this->insertNewPost($post_type, $p, $html, $chapter_parent);
if ('part' == $post_type) {
$chapter_parent = $pid;
}
}
// if this is a custom post type,
// and it has terms associated with it...
if (in_array($post_type, $custom_post_types) && true == $p['terms']) {
// associate post with terms.
foreach ($p['terms'] as $t) {
if (in_array($t['domain'], $taxonomies)) {
wp_set_object_terms($pid, $t['slug'], $t['domain'], true);
}
}
}
if (isset($p['postmeta']) && is_array($p['postmeta'])) {
$this->importPbPostMeta($pid, $post_type, $p);
}
Book::consolidatePost($pid, get_post($pid));
// Reorder
++$total;
}
$errors = libxml_get_errors();
// TODO: Handle errors gracefully
libxml_clear_errors();
// Done
$_SESSION['pb_notices'][] = sprintf(__('Imported %s chapters.', 'pressbooks'), $total);
return $this->revokeCurrentImport();
}