existsItem($itemid,1,1)) return _error(6,"No such item ($itemid)"); $old =& $manager->getItem($itemid,1,1); $wasdraft = ($old['draft']) ? 1 : 0; return _edititem($itemid, $username, $password, $old['catid'], $title, $content, $more, $wasdraft, $publish, $closed); } // nucleus.getUsersBlogs $f_nucleus_getUsersBlogs_sig = array(array( // return type $xmlrpcArray, // array containing structs containing blog info // params: $xmlrpcString, // username $xmlrpcString, // password )); $f_nucleus_getUsersBlogs_doc = "Returns a list of all the blogs where the given member is on the team"; function f_nucleus_getUsersBlogs($m) { $username = _getScalar($m,0); $password = _getScalar($m,1); return _getUsersBlogs($username, $password); } // nucleus.getRecentItems $f_nucleus_getRecentItems_sig = array(array( // return type $xmlrpcArray, // array of strucs (representing items) // params $xmlrpcString, // blogid $xmlrpcString, // username $xmlrpcString, // password $xmlrpcInt, // amount of items to return (max = 20) )); $f_nucleus_getRecentItems_doc = "Returns a maximum of 20 recent items for a given webblog"; function f_nucleus_getRecentItems($m) { $blogid = _getScalar($m, 0); $username = _getScalar($m, 1); $password = _getScalar($m, 2); $amount = _getScalar($m, 3); return _getRecentItems($blogid, $username, $password, $amount); } // nucleus.getItem $f_nucleus_getItem_sig = array(array( // return type $xmlrpcStruct, // A struct representing the item // params $xmlrpcString, // itemid $xmlrpcString, // username $xmlrpcString, // password )); $f_nucleus_getItem_doc = "Returns an item"; function f_nucleus_getItem($m) { $postid = _getScalar($m, 0); $username = _getScalar($m, 1); $password = _getScalar($m, 2); return _getItem($postid, $username, $password); } // nucleus.deleteItem $f_nucleus_deleteItem_sig = array(array( // return type $xmlrpcBoolean, // boolean (ok or not ok) // params $xmlrpcString, // itemid $xmlrpcString, // username $xmlrpcString, // password )); $f_nucleus_deleteItem_doc = "Deletes an item"; function f_nucleus_deleteItem($m) { $itemid = _getScalar($m,0); $username = _getScalar($m, 1); $password = _getScalar($m, 2); return _deleteItem($itemid, $username, $password); } /** * Returns a list of recent items (Nucleus Version) * ($amount = max 20); */ function _getRecentItems($blogid, $username, $password, $amount) { $blogid = intval($blogid); $amount = intval($amount); // 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"); $amount = intval($amount); if (($amount < 1) or ($amount > 20)) return _error(5,"Amount parameter must be in range 1..20"); // 3. create and return list of recent items // Struct returned has dateCreated, userid, blogid and content $structarray = array(); // the array in which the structs will be stored $query = "SELECT ibody, iauthor, ibody, imore, ititle, iclosed, idraft, itime" .' FROM '.sql_table('item') ." WHERE iblog=$blogid" ." ORDER BY itime DESC" ." LIMIT $amount"; $r = sql_query($query); while ($obj = mysql_fetch_object($r)) { $newstruct = new xmlrpcval(array( "publishDate" => new xmlrpcval(iso8601_encode(strtotime($obj->itime)),"dateTime.iso8601"), "userid" => new xmlrpcval($obj->iauthor,"string"), "blogid" => new xmlrpcval($blogid,"string"), "title" => new xmlrpcval($obj->ititle,"string"), "body" => new xmlrpcval($obj->ibody,"string"), "more" => new xmlrpcval($obj->imore,"string"), "draft" => new xmlrpcval($obj->idraft,"boolean"), "closed" => new xmlrpcval($obj->iclosed,"boolean"), ),'struct'); array_push($structarray, $newstruct); } return new xmlrpcresp(new xmlrpcval( $structarray , "array")); } /** * Returns one item (Nucleus version) */ function _getItem($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"); // 3. return the item // Structure returned has dateCreated, userid, blogid and content $item =& $manager->getItem($itemid,1,1); // (also allow drafts and future items) $blog = new BLOG($blogid); if ($blog->convertBreaks()) $item['body'] = removeBreaks($item['body']); $newstruct = new xmlrpcval(array( "publishDate" => new xmlrpcval(iso8601_encode($item['timestamp']),"dateTime.iso8601"), "userid" => new xmlrpcval($item['authorid'],"string"), "blogid" => new xmlrpcval($blogid,"string"), "title" => new xmlrpcval($item['title'],"string"), "body" => new xmlrpcval($item['body'],"string"), "more" => new xmlrpcval($item['more'],"string"), "draft" => new xmlrpcval($item['draft'],"boolean"), "closed" => new xmlrpcval($ite['closed'],"boolean"), ),'struct'); return new xmlrpcresp($newstruct); } $functionDefs = array_merge($functionDefs, array( "nucleus.addItem" => array( "function" => "f_nucleus_addItem", "signature" => $f_nucleus_addItem_sig, "docstring" => $f_nucleus_addItem_doc), "nucleus.editItem" => array( "function" => "f_nucleus_editItem", "signature" => $f_nucleus_editItem_sig, "docstring" => $f_nucleus_editItem_doc), "nucleus.addDatedItem" => array( "function" => "f_nucleus_addDatedItem", "signature" => $f_nucleus_addDatedItem_sig, "docstring" => $f_nucleus_addDatedItem_doc), "nucleus.deleteItem" => array( "function" => "f_nucleus_deleteItem", "signature" => $f_nucleus_deleteItem_sig, "docstring" => $f_nucleus_deleteItem_doc), "nucleus.getUsersBlogs" => array( "function" => "f_nucleus_getUsersBlogs", "signature" => $f_nucleus_getUsersBlogs_sig, "docstring" => $f_nucleus_getUsersBlogs_doc), "nucleus.getRecentItems" => array( "function" => "f_nucleus_getRecentItems", "signature" => $f_nucleus_getRecentItems_sig, "docstring" => $f_nucleus_getRecentItems_doc), "nucleus.getItem" => array( "function" => "f_nucleus_getItem", "signature" => $f_nucleus_getItem_sig, "docstring" => $f_nucleus_getItem_doc) ) ); ?>