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));
    }
}
示例#5
0
 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;
 }
示例#6
0
 /**
  *
  */
 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);
     }
 }
示例#7
0
 /**
  * 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(']]>', ']]&gt', $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;
 }
示例#9
0
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;
         }
     }
 }