ion++; if (!$item->store()) { return new xmlrpcresp(0, $xmlrpcerruser+1, JText::_('Post store failed') ); } $item->state = ($publish && $access->canPublish) ? 1 : 0; //lock the item $item->checkout(); return new xmlrpcresp(new xmlrpcval('true', $xmlrpcBoolean)); } function deletePost($appkey, $postid, $username, $password, $publish) { global $xmlrpcerruser, $xmlrpcI4, $xmlrpcInt, $xmlrpcBoolean, $xmlrpcDouble, $xmlrpcString, $xmlrpcDateTime, $xmlrpcBase64, $xmlrpcArray, $xmlrpcStruct, $xmlrpcValue; if(!plgXMLRPCBloggerHelper::authenticateUser($username, $password)) { return new xmlrpcresp(0, $xmlrpcerruser+1, JText::_("Login Failed")); } $user =& JFactory::getUser($username); plgXMLRPCBloggerHelper::getUserAid( $user ); if ($user->get('gid') < 23) { return new xmlrpcresp(0, $xmlrpcerruser+1, JText::_('ALERTNOTAUTH')); } // load the row from the db table $item =& JTable::getInstance('content'); if(!$item->load( $postid )) { return new xmlrpcresp(0, $xmlrpcerruser+1, JText::_('Sorry, no such post') ); } if($item->isCheckedOut($user->get('id'))) { return new xmlrpcresp(0, $xmlrpcerruser+1, JText::_('Sorry, post is already being edited') ); } //lock the item $item->checkout(); $item->state = -2; $item->ordering = 0; if (!$item->store()) { return new xmlrpcresp(0, $xmlrpcerruser+1, JText::_('Post delete failed') ); } return new xmlrpcresp(new xmlrpcval('true', $xmlrpcBoolean)); } /** * Blogger API - blogger.getRecentPosts * * @param xmlrpcmessage XML-RPC message passed to the method * @return xmlrpcresp XML-RPC response */ function getRecentPosts($appkey, $blogid, $username, $password, $numposts) { global $xmlrpcerruser, $xmlrpcI4, $xmlrpcInt, $xmlrpcBoolean, $xmlrpcDouble, $xmlrpcString, $xmlrpcDateTime, $xmlrpcBase64, $xmlrpcArray, $xmlrpcStruct, $xmlrpcValue; if(!plgXMLRPCBloggerHelper::authenticateUser($username, $password)) { return new xmlrpcresp(0, $xmlrpcerruser+1, JText::_("Login Failed")); } $user =& JFactory::getUser($username); plgXMLRPCBloggerHelper::getUserAid( $user ); // load plugin params info $plugin =& JPluginHelper::getPlugin('xmlrpc','blogger'); $params = new JParameter( $plugin->params ); $db =& JFactory::getDBO(); $nullDate = $db->getNullDate(); $date =& JFactory::getDate(); $now = $date->toMySQL(); $blogid = (int) $blogid; $canReadUnpublished = $user->authorize('com_content', 'edit', 'content', 'all'); if ($canReadUnpublished) { $publishedWhere = ''; $publishTimeWhere = ''; } else { $publishedWhere = ' AND u.published = 1 AND b.published = 1'; $publishTimeWhere = ' AND ( a.publish_up = '.$db->Quote($nullDate).' OR a.publish_up <= '.$db->Quote($now).' )' . ' AND ( a.publish_down = '.$db->Quote($nullDate).' OR a.publish_down >= '.$db->Quote($now).' )'; } $query = 'SELECT a.title AS title,' . ' a.created AS created,' . ' a.introtext AS introtext,' . ' a.fulltext AS ftext,' . ' a.id AS id,' . ' a.created_by AS created_by' . ' FROM #__content AS a' . ' INNER JOIN #__categories AS b ON b.id=a.catid' . ' INNER JOIN #__sections AS u ON u.id = a.sectionid' . ' WHERE a.catid = '. $blogid . $publishedWhere . ' AND a.access <= '.(int) $user->get( 'aid' ) . ' AND b.access <= '.(int) $user->get( 'aid' ) . ' AND u.access <= '.(int) $user->get( 'aid' ) . $publishTimeWhere ; $db->setQuery($query, 0, $numposts); $items = $db->loadObjectList(); if ($items === null) { return new xmlrpcresp(0, $xmlrpcerruser+1, JText::_('No posts available, or an error has occured.') ); } $structArray = array(); foreach ($items as $item) { $content = ''.$item->title.''; $content .= $item->introtext.''.$item->ftext.''; $structArray[] = new xmlrpcval(array( 'userid' => new xmlrpcval($item->created_by), 'dateCreated' => new xmlrpcval($item->created), 'content' => new xmlrpcval($content), 'postid' => new xmlrpcval($item->id) ), 'struct'); } return new xmlrpcresp(new xmlrpcval( $structArray , $xmlrpcArray)); } function getTemplate($appkey, $blogid, $username, $password, $templateType) { global $xmlrpcerruser; return new xmlrpcresp(0, $xmlrpcerruser+1, JText::_('Method not implemented') ); } function setTemplate($appkey, $blogid, $username, $password, $template, $templateType) { global $xmlrpcerruser; return new xmlrpcresp(0, $xmlrpcerruser+1, JText::_('Method not implemented') ); } } class plgXMLRPCBloggerHelper { function getUserAid( &$user ) { $acl = &JFactory::getACL(); //Get the user group from the ACL $grp = $acl->getAroGroup($user->get('id')); // Mark the user as logged in $user->set('guest', 0); $user->set('aid', 1); // Fudge Authors, Editors, Publishers and Super Administrators into the special access group if ($acl->is_group_child_of($grp->name, 'Registered') || $acl->is_group_child_of($grp->name, 'Public Backend')) { $user->set('aid', 2); } } function authenticateUser($username, $password) { // Get the global JAuthentication object jimport( 'joomla.user.authentication'); $auth = & JAuthentication::getInstance(); $credentials = array( 'username' => $username, 'password' => $password ); $options = array(); $response = $auth->authenticate($credentials, $options); return $response->status === JAUTHENTICATE_STATUS_SUCCESS; } function getPostTitle($content) { $title = ''; if ( preg_match('/(.+?)<\/title>/is', $content, $matchtitle) ) { $title = $matchtitle[0]; $title = preg_replace('/<title>/si', '', $title); $title = preg_replace('/<\/title>/si', '', $title); } if (empty( $title )) { $title = substr( $content, 0, 20 ); } return $title; } function getPostCategory($content) { $category = 0; $match = array(); if ( preg_match('/<category>(.+?)<\/category>/is', $content, $match) ) { $category = trim($match[1], ','); $category = explode(',', $category); } return $category; } function getPostIntroText($content) { return plgXMLRPCBloggerHelper::removePostData($content); //substr($string, 0, strpos($string, '<more_text>')); } function getPostFullText($content) { $match = array(); if ( preg_match('/<more_text>(.+?)<\/more_text>/is', $content, $match) ) { $fulltext = $match[0]; $fulltext = preg_replace('/<more_text>/si', '', $fulltext); $fulltext = preg_replace('/<\/more_text>/si', '', $fulltext); } return $fulltext; } function removePostData($content) { $content = preg_replace('/<title>(.+?)<\/title>/si', '', $content); $content = preg_replace('/<category>(.+?)<\/category>/si', '', $content); $content = preg_replace('/<more_text>(.+?)<\/more_text>/si', '', $content); $content = trim($content); return $content; } } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<html><body bgcolor="#FFFFFF"></body></html>������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������