getBlog($blogid); $timestamp = $blog->getCorrectTime(); return _addDatedItem($blogid, $username, $password, $title, $body, $more, $publish, $closed, $timestamp, 0, $catname); } /** * Adds item to blog, with time of item given */ function _addDatedItem($blogid, $username, $password, $title, $body, $more, $publish, $closed = '0', $timestamp, $future, $catname = "") { global $manager; // 1. login $mem = new Member(); if (!$mem->login($username, $password)) return _error(1,"Could not log in"); // 2. check if allowed to add to blog if (!Blog::existsID($blogid)) return _error(2,"No such blog ($blogid)"); if (!$mem->teamRights($blogid)) return _error(3,"Not a team member"); if (!trim($body)) return _error(4,"Cannot add empty items!"); // 3. calculate missing vars $blog =& $manager->getBlog($blogid); // get category id (or id for default category when false category) $catid = $blog->getCategoryIdFromName($catname); if ($publish == 1) { $draft = 0; } else { $draft = 1; } // not needed because BLOG:additem has the same code /*if ($closed != 1) {$closed = 0;}*/ // 4. add to blog $itemid = $blog->additem($catid, $title, $body, $more, $blogid, $mem->getID(), $timestamp, $closed, $draft); // [TODO] ping weblogs.com ? return new xmlrpcresp(new xmlrpcval($itemid,"string")); } /** * Updates an item. Username and password are required to login */ function _edititem($itemid, $username, $password, $catid, $title, $body, $more, $wasdraft, $publish, $closed) { global $manager; // 1. login $mem = new Member(); if (!$mem->login($username, $password)) return _error(1,"Could not log in"); // 2. check if allowed to add to blog if (!$manager->existsItem($itemid,1,1)) return _error(6,"No such item ($itemid)"); if (!$mem->canAlterItem($itemid)) return _error(7,"Not allowed to alter item"); // 3. update item Item::update($itemid, $catid, $title, $body, $more, $closed, $wasdraft, $publish, 0); return new xmlrpcresp(new xmlrpcval(1,"boolean")); } /** * Gives the list of blogs to which the user with given name and password has access */ function _getUsersBlogs($username, $password) { // 1. Try to login $mem = new Member(); if (!$mem->login($username, $password)) return _error(1,"Could not log in"); // 2. Get list of blogs $structarray = array(); $query = "SELECT bnumber, bname, burl" . ' FROM '.sql_table('blog').', '.sql_table('team') . " WHERE tblog=bnumber and tmember=" . $mem->getID() . " ORDER BY bname"; $r = DB::getResult($query); foreach ( $r as $row ) { if ( $row['burl'] ) { $blogurl = $row['burl']; } if ( $obj->burl ) { $blogurl = $obj->burl; } else { $blogurl = 'http://'; } $newstruct = new xmlrpcval(array( "url" => new xmlrpcval($blogurl, "string"), "blogid" => new xmlrpcval($row['bnumber'], "string"), "blogName" => new xmlrpcval($row['bname'], "string") ),'struct'); array_push($structarray, $newstruct); } return new xmlrpcresp(new xmlrpcval( $structarray , "array")); } function _getUserInfo($username, $password) { // 1. login $mem = new Member(); if (!$mem->login($username, $password)) return _error(1,"Could not log in"); // 3. return the info // Structure returned has nickname, userid, url, email, lastname, firstname $newstruct = new xmlrpcval(array( "nickname" => new xmlrpcval($mem->getDisplayName(),"string"), "userid" => new xmlrpcval($mem->getID(),"string"), "url" => new xmlrpcval($mem->getURL(),"string"), "email" => new xmlrpcval($mem->getEmail(),"string"), "lastname" => new xmlrpcval("","string"), "firstname" => new xmlrpcval($mem->getRealName(),"string") ),'struct'); return new xmlrpcresp($newstruct); } /** * deletes an item */ function _deleteItem($itemid, $username, $password) { global $manager; // 1. login $mem = new Member(); if (!$mem->login($username, $password)) return _error(1,"Could not log in"); // 2. check if allowed if (!$manager->existsItem($itemid,1,1)) return _error(6,"No such item ($itemid)"); $blogid = getBlogIDFromItemID($itemid); if (!$mem->teamRights($blogid)) return _error(3,"Not a team member"); // delete the item Item::delete($itemid); return new xmlrpcresp(new xmlrpcval(1,"boolean")); } /** * Returns a template */ function _getSkinPart($blogid, $username, $password, $type) { global $manager; // 1. login $mem = new Member(); if (!$mem->login($username, $password)) return _error(1,"Could not log in"); // 2. check if allowed if (!Blog::existsID($blogid)) return _error(2,"No such blog ($blogid)"); if (!$mem->teamRights($blogid)) return _error(3,"Not a team member"); // 3. return skin part $blog =& $manager->getBlog($blogid); $skin =& $manager->getSkin($blog->getDefaultSkin()); return new xmlrpcresp(new xmlrpcval($skin->getContentFromDB($type),"string")); } function _setSkinPart($blogid, $username, $password, $content, $type) { global $manager; // 1. login $mem = new Member(); if (!$mem->login($username, $password)) return _error(1,"Could not log in"); // 2. check if allowed if (!Blog::existsID($blogid)) return _error(2,"No such blog ($blogid)"); if (!$mem->teamRights($blogid)) return _error(3,"Not a team member"); // 3. update skin part $blog =& $manager->getBlog($blogid); $skin =& $manager->getSkin($blog->getDefaultSkin()); $skin->update($type, $content); return new xmlrpcresp(new xmlrpcval(1,'boolean')); } /** * Some convenience methods */ function _getScalar($m, $idx) { $v = $m->getParam($idx); return $v->scalarval(); } function _getStructVal($struct, $key) { $t = $struct->structmem($key); if (!$t) return ''; // no such struct value else return $t->scalarval(); } function _getArrayVal($a, $idx) { $t = $a->arraymem($idx); return $t->scalarval(); } /** * Returns an XML-RPC error response * $err is the error number (>0, will be added to $xmlrpcerruser) */ function _error($err, $msg) { global $xmlrpcerruser; return new xmlrpcresp(0, $xmlrpcerruser + $err, $msg); } ?>