function mt_getpost($params) { // ($postid, $user, $pass) $xpostid = $params->getParam(0); $xuser = $params->getParam(1); $xpass = $params->getParam(2); $post_ID = $xpostid->scalarval(); $username = $xuser->scalarval(); $password = $xpass->scalarval(); // Check login if (user_pass_ok(addslashes($username), $password)) { $postdata = get_postdata($post_ID); if ($postdata['Date'] != '') { // why were we converting to GMT here? spec doesn't call for that. //$post_date = mysql2date('U', $postdata['Date']); //$post_date = gmdate('Ymd', $post_date).'T'.gmdate('H:i:s', $post_date); $post_date = strtotime($postdata['Date']); $post_date = date('Ymd', $post_date) . 'T' . date('H:i:s', $post_date); $catids = wp_get_post_cats('1', $post_ID); logIO('O', 'Category No:' . count($catids)); foreach ($catids as $catid) { $catname = get_cat_name($catid); logIO('O', 'Category:' . $catname); $catnameenc = new xmlrpcval(mb_conv($catname, 'UTF-8', $GLOBALS['blog_charset'])); $catlist[] = $catnameenc; } $post = get_extended($postdata['Content']); $allow_comments = 'open' == $postdata['comment_status'] ? 1 : 0; $allow_pings = 'open' == $postdata['ping_status'] ? 1 : 0; $resp = array('link' => new xmlrpcval(post_permalink($post_ID)), 'title' => new xmlrpcval(mb_conv($postdata['Title'], 'UTF-8', $GLOBALS['blog_charset'])), 'description' => new xmlrpcval(mb_conv($post['main'], 'UTF-8', $GLOBALS['blog_charset'])), 'dateCreated' => new xmlrpcval($post_date, 'dateTime.iso8601'), 'userid' => new xmlrpcval($postdata['Author_ID']), 'postid' => new xmlrpcval($postdata['ID']), 'content' => new xmlrpcval(mb_conv($postdata['Content'], 'UTF-8', $GLOBALS['blog_charset'])), 'permalink' => new xmlrpcval(post_permalink($post_ID)), 'categories' => new xmlrpcval($catlist, 'array'), 'mt_keywords' => new xmlrpcval("{$catids[0]}"), 'mt_excerpt' => new xmlrpcval(mb_conv($postdata['Excerpt'], 'UTF-8', $GLOBALS['blog_charset'])), 'mt_allow_comments' => new xmlrpcval($allow_comments, 'int'), 'mt_allow_pings' => new xmlrpcval($allow_pings, 'int'), 'mt_convert_breaks' => new xmlrpcval('true'), 'mt_text_more' => new xmlrpcval(mb_conv($post['extended'], 'UTF-8', $GLOBALS['blog_charset']))); $resp = new xmlrpcval($resp, 'struct'); return new xmlrpcresp($resp); } else { return new xmlrpcresp(0, $GLOBALS['xmlrpcerruser'] + 3, "No such post #{$post_ID}"); } } else { return new xmlrpcresp(0, $GLOBALS['xmlrpcerruser'] + 3, 'Wrong username/password combination ' . $username . ' / ' . starify($password)); } }
function wp_get_single_post($postid = 0, $mode = OBJECT) { global $wpdb; $sql = "SELECT * FROM {$wpdb->posts} WHERE ID={$postid}"; $result = $wpdb->get_row($sql, $mode); // Set categories if ($mode == OBJECT) { $result->post_category = wp_get_post_cats('', $postid); } else { $result['post_category'] = wp_get_post_cats('', $postid); } return $result; }
function wp_delete_post($postid = 0) { global $wpdb, $wp_rewrite; $postid = (int) $postid; if ( !$post = $wpdb->get_row("SELECT * FROM $wpdb->posts WHERE ID = $postid") ) return $post; if ( 'attachment' == $post->post_status ) return wp_delete_attachment($postid); do_action('delete_post', $postid); if ( 'publish' == $post->post_status) { $categories = wp_get_post_cats('', $post->ID); if( is_array( $categories ) ) { foreach ( $categories as $cat_id ) { $wpdb->query("UPDATE $wpdb->categories SET category_count = category_count - 1 WHERE cat_ID = '$cat_id'"); wp_cache_delete($cat_id, 'category'); } } } if ( 'static' == $post->post_status ) $wpdb->query("UPDATE $wpdb->posts SET post_parent = $post->post_parent WHERE post_parent = $postid AND post_status = 'static'"); $wpdb->query("DELETE FROM $wpdb->posts WHERE ID = $postid"); $wpdb->query("DELETE FROM $wpdb->comments WHERE comment_post_ID = $postid"); $wpdb->query("DELETE FROM $wpdb->post2cat WHERE post_id = $postid"); $wpdb->query("DELETE FROM $wpdb->postmeta WHERE post_id = $postid"); if ( 'static' == $post->post_status ) { wp_cache_delete('all_page_ids', 'pages'); $wp_rewrite->flush_rules(); } return $post; }
function mt_getpost($params) { // ($postid, $user, $pass) global $xmlrpcerruser; $xpostid = $params->getParam(0); $xuser = $params->getParam(1); $xpass = $params->getParam(2); $post_ID = $xpostid->scalarval(); $username = $xuser->scalarval(); $password = $xpass->scalarval(); // Check login if (user_pass_ok($username, $password)) { $postdata = get_postdata($post_ID); if ($postdata["Date"] != "") { // why were we converting to GMT here? spec doesn't call for that. //$post_date = mysql2date("U", $postdata["Date"]); //$post_date = gmdate("Ymd", $post_date)."T".gmdate("H:i:s", $post_date); $post_date = strtotime($postdata['Date']); $post_date = date("Ymd", $post_date) . "T" . date("H:i:s", $post_date); $catids = wp_get_post_cats('1', $post_ID); logIO("O", "CateGory No:" . count($catids)); foreach ($catids as $catid) { $catname = get_cat_name($catid); logIO("O", "CateGory:" . $catname); $catnameenc = new xmlrpcval(mb_conv($catname, "UTF-8", "auto")); $catlist[] = $catnameenc; } $post = get_extended($postdata['Content']); $allow_comments = 'open' == $postdata['comment_status'] ? 1 : 0; $allow_pings = 'open' == $postdata['ping_status'] ? 1 : 0; $resp = array('link' => new xmlrpcval(post_permalink($post_ID)), 'title' => new xmlrpcval(mb_conv($postdata["Title"], "UTF-8", "auto")), 'description' => new xmlrpcval(mb_conv($post['main'], "UTF-8", "auto")), 'dateCreated' => new xmlrpcval($post_date, 'dateTime.iso8601'), 'userid' => new xmlrpcval($postdata["Author_ID"]), 'postid' => new xmlrpcval($postdata["ID"]), 'content' => new xmlrpcval(mb_conv($postdata["Content"], "UTF-8", "auto")), 'permalink' => new xmlrpcval(post_permalink($post_ID)), 'categories' => new xmlrpcval($catlist, 'array'), 'mt_keywords' => new xmlrpcval("{$catids[0]}"), 'mt_excerpt' => new xmlrpcval(mb_conv($postdata['Excerpt'], "UTF-8", "auto")), 'mt_allow_comments' => new xmlrpcval($allow_comments, 'int'), 'mt_allow_pings' => new xmlrpcval($allow_pings, 'int'), 'mt_convert_breaks' => new xmlrpcval('true'), 'mt_text_more' => new xmlrpcval(mb_conv($post['extended'], "UTF-8", "auto"))); $resp = new xmlrpcval($resp, 'struct'); return new xmlrpcresp($resp); } else { return new xmlrpcresp(0, $xmlrpcerruser + 3, "No such post #{$post_ID}"); } } else { return new xmlrpcresp(0, $xmlrpcerruser + 3, 'Wrong username/password combination ' . $username . ' / ' . starify($password)); } }
function mt_publishPost($args) { $this->escape($args); $post_ID = $args[0]; $user_login = $args[1]; $user_pass = $args[2]; if (!$this->login_pass_ok($user_login, $user_pass)) { return $this->error; } $user = new WP_User(0, $user_login); if (!$user->has_cap('edit_post', $post_ID)) { return new IXR_Error(401, 'Sorry, you can not edit this post.'); } $postdata = wp_get_single_post($post_ID, ARRAY_A); $postdata['post_status'] = 'publish'; // retain old cats $cats = wp_get_post_cats('', $post_ID); $postdata['post_category'] = $cats; $this->escape($postdata); $result = wp_update_post($postdata); return $result; }
/** * */ function wpadp_check_and_add_cats() { global $wpdb; $this->get_settings(); $expiration = $this->settings['PostAge']; $newCat = array($this->settings['AddCategory']); /* * Create a query that will give us all the post ID's that predate the * interval we are given, that is, NOW - expiration date. */ $query = "SELECT ID FROM {$wpdb->posts} WHERE post_status = 'publish' AND post_type = 'post' AND\n post_date < '{$date}' - INTERVAL " . $expiration . " DAY"; $ids = $wpdb->get_results($query); foreach ($ids as $id) { if ('' == $id->ID) { continue; } $curCat = wp_get_post_cats('', $id->ID); // Merge the contents of the newCat array with the curCat array, each of these can contain // multiple values $curCat = array_merge($curCat, $newCat); wp_set_post_cats('', $id->ID, $curCat); } }
/** * Gives TRUE/FALSE for users rights for spezific request * * @uses $post * @uses $access_pag_anonymous * @uses $access_pag_default * @uses $access_cat_anonymous * @uses $access_cat_default * * @uses get_option() * @uses wp_get_post_cats() * * @param string $val_id * @param array object $user * @param string $kind Select between 'pag' / 'cat' * @param string $parent_id * * @return bool */ function user_can_access($val_id, $user, $kind, $parent_id = '') { global $post; if ($user && isset($user->allcaps['manage_categories']) && !isset($user->caps['editor'])) { return true; } global $access_pag_anonymous, $access_pag_default, $access_cat_anonymous, $access_cat_default; switch ($kind) { case 'pag': case 'page': if ($user->id == 0) { $user_access_page_check = $access_pag_anonymous; } else { $user_access_page_check = get_option("capa_protect_pag_user_{$user->id}"); } if (empty($user_access_page_check)) { // Group Settings $tmp_caps = implode('', array_keys($user->caps)); $user_access_page_check = get_option("capa_protect_pag_role_{$tmp_caps}"); } // Default Setting if (empty($user_access_page_check)) { $user_access_page_check = $access_pag_default; } if (isset($user_access_page_check[$val_id])) { return true; } else { return false; } $user_access_pag_check = ""; break 1; case 'cat': case 'category': // parent id check for attachment if (is_attachment()) { $access_post = wp_get_post_cats(1, $parent_id); $val_id = $access_post[0]; } if ($user->id == 0) { $user_access_category_check = $access_cat_anonymous; } else { $user_access_category_check = get_option("capa_protect_cat_user_{$user->id}"); } // User Settings if (empty($user_access_category_check)) { // Group Settings $tmp_caps = implode('', array_keys($user->caps)); $user_access_category_check = get_option("capa_protect_cat_role_{$tmp_caps}"); } // Default Setting if (empty($user_access_category_check)) { $user_access_category_check = $access_cat_default; } $return = FALSE; if ($user_access_category_check !== FALSE) { if (is_array($val_id)) { foreach ($val_id as $key => $id) { if (array_key_exists($id, $user_access_category_check)) { $return = TRUE; } } } else { if (array_key_exists($val_id, $user_access_category_check)) { $return = TRUE; } } } return $return; $user_access_category_check = ""; break 1; } }
/** Sends an email notification of a new post */ function publish($id = 0) { if (!$id) { return $id; } // if this is an edit, we don't need to do anything if ('post' !== $_POST['action']) { return $id; } $post_cats = wp_get_post_cats('1', $id); $post_cats_string = implode(',', $post_cats); $check = false; // is the current post assigned to any categories // which should not generate a notification email? foreach (explode(',', $this->get_excluded_cats()) as $cat) { if (in_array($cat, $post_cats)) { $check = true; } } // if so, bail out if ($check) { // hang on -- can registered users subscribe to // excluded categories? if ('0' == get_option('s2_reg_override')) { // nope? okay, let's leave return $id; } } global $wpdb; $post =& get_post($id); // is this post set in the future? if ($post->post_date > current_time('mysql')) { // if so, bail out // we really should make a cron action here return $id; } // lets collect our public subscribers // and all our registered subscribers for these categories $public = array(); $registered = array(); if (!$check) { // if this post is assigned to an excluded // category, then this test will prevent // the public from receiving notification $public = $this->get_public(); } $registered = $this->get_registered("cats={$post_cats_string}"); // do we have subscribers? if (empty($public) && empty($registered)) { // if not, no sense doing anything else return $id; } // we set these class variables so that we can avoid // passing them in function calls a little later $this->post_title = $post->post_title; $this->permalink = get_permalink($id); // do we send as admin, or post author? if ('author' == get_option('s2_sender')) { // get author details $user = get_userdata($post->post_author); } else { // get admin detailts $user = get_userdata(1); } $this->myemail = $user->user_email; $this->myname = $user->display_name; // Get email subject $subject = $this->substitute($this->s2_subject); // Get the message template $mailtext = $this->substitute(stripslashes(get_option('s2_mailtext'))); $plaintext = $post->post_content; $content = apply_filters('the_content', $post->post_content); $content = str_replace(']]>', ']]>', $content); $excerpt = $post->post_excerpt; if ('' == $excerpt) { // no excerpt, is there a <!--more--> ? if (false !== strpos($content, '<!--more-->')) { list($excerpt, $more) = explode('<!--more-->', $plaintext, 2); // strip leading and trailing whitespace $excerpt = trim($excerpt); } else { $excerpt = strip_tags($plaintext); $excerpt_length = 55; $words = explode(' ', $plaintext, $excerpt_length + 1); if (count($words) > $excerpt_length) { array_pop($words); array_push($words, '[...]'); $excerpt = implode(' ', $words); } } } // first we send plaintext summary emails $body = str_replace('POST', $excerpt, $mailtext); $this->mail(array_merge($this->get_public(), $this->get_registered("cats={$post_cats}&format=text&amount=excerpt")), $subject, $body); // next we send plaintext full content emails $body = str_replace('POST', $content, $mailtext); $this->mail($this->get_registered("cats={$post_cats_string}&format=text&amount=post"), $subject, $body); // finally we send html full content emails $body = str_replace("\r\n", "<br />\r\n", $mailtext); $body = str_replace('POST', $content, $body); $this->mail($this->get_registered("cats={$post_cats_string}&format=html"), $subject, $body, 'html'); return $id; }
function wp_delete_post($postid = 0) { global $wpdb; $postid = (int) $postid; if (!($post = $wpdb->get_row("SELECT * FROM {$wpdb->posts} WHERE ID = {$postid}"))) { return $post; } if ('attachment' == $post->post_status) { return wp_delete_attachment($postid); } do_action('delete_post', $postid); if ('publish' == $post->post_status) { $categories = wp_get_post_cats('', $post->ID); if (is_array($categories)) { foreach ($categories as $cat_id) { $wpdb->query("UPDATE {$wpdb->categories} SET category_count = category_count - 1 WHERE cat_ID = '{$cat_id}'"); wp_cache_delete($cat_id, 'category'); } } } if ('static' == $post->post_status) { $wpdb->query("UPDATE {$wpdb->posts} SET post_parent = {$post->post_parent} WHERE post_parent = {$postid} AND post_status = 'static'"); } $wpdb->query("DELETE FROM {$wpdb->posts} WHERE ID = {$postid}"); $wpdb->query("DELETE FROM {$wpdb->comments} WHERE comment_post_ID = {$postid}"); $wpdb->query("DELETE FROM {$wpdb->post2cat} WHERE post_id = {$postid}"); $wpdb->query("DELETE FROM {$wpdb->postmeta} WHERE post_id = {$postid}"); if ('static' == $post->post_status) { generate_page_rewrite_rules(); } return $post; }
function Get_DefaultCategory() { if (get_bloginfo('version') >= '2.1') { $myposts = wp_get_post_categories($this->post->ID); } else { $myposts = wp_get_post_cats('1', $this->post->ID); } $array_def = pt_pathinfo($this->def_url); $filename = $array_def['filename']; foreach ($myposts as $mypost) { $new_def = $array_def['dirname'] . '/' . $filename . 'cat-' . $mypost . '.' . $array_def['extension']; if (remote_file_exists($new_def)) { $this->def_url = $new_def; break; } } }