标签: moodle

通过Python的请求库访问Moodle服务器的API

我正在尝试使用 Python 的请求库访问 Moodle 安装的 Web 服务。我有 API 的文档和一个用 php 编写的示例项目(我以前没有看过 php,它比我预期的要理解的要困难得多),但我真的很难正确格式化请求。该网站返回检测到的无效参数,因此我非常确定我的端点、授权令牌和服务器配置正在工作,只是数据的格式让我失望。

首先这里是错误...

<?xml version="1.0" encoding="UTF-8" ?>
<EXCEPTION class="invalid_parameter_exception">
<ERRORCODE>invalidparameter</ERRORCODE>
<MESSAGE>Invalid parameter value detected</MESSAGE>
</EXCEPTION>
Run Code Online (Sandbox Code Playgroud)

现在我的代码...

import requests

target = 'http://example.com/moodle/webservice/rest/server.php?'
moodle_create_token = 'xxx'
moodle_enrol_token = 'yyy'
url_payload = {
    "wstoken":moodle_create_token,
   "wsfunction":"core_user_create_users"
    }

###not sure if I should just be passing this as a dict or some deeper more layered struct
payload = {
    "username":"testuser",
    "password":'testpass',
    "firstname":'testf',
    "lastname":'testl',
    "email":"test@example.com",
    "idnumber":"1234"
}

###not sure how to include the payload as the …
Run Code Online (Sandbox Code Playgroud)

python rest moodle python-requests moodle-api

5
推荐指数
1
解决办法
7030
查看次数

难以构建XML-RPC.NET客户端(与Moodle一起使用)

我正在使用CookComputing XML-RPC库来构建C#控制台客户端,以便在Moodle(一个开源学习管理系统)上执行API方法.服务器正在使用ZEND XML-RPC.

当我运行代码时,我得到一个TypeLoadException是Unhandled,引用这一行:

System.Object myResults = proxy.moodle_user_get_user_by_id(myUserIds);
Run Code Online (Sandbox Code Playgroud)

"重写成员时违反了继承安全规则:'CookComputing.XmlRpc.XmlRpcFaultException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)'.重写方法的安全性可访问性必须与方法的安全性可访问性相匹配被覆盖."

我的客户端代码是:

...
using CookComputing.XmlRpc;


[XmlRpcUrl("http://moodle.ourcompany.com/webservice/xmlrpc/server.php?wstoken=somereallylongtokenstring")]
public interface IMoodleUserGetUsersById : IXmlRpcProxy
{
    [XmlRpcMethod("moodle_user_get_users_by_id")]
    System.Object moodle_user_get_user_by_id(int[] userIds);
}

namespace Moodle_test_api1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Testing XML-RPC Services for Moodle!");

            IMoodleUserGetUsersById proxy = XmlRpcProxyGen.Create<IMoodleUserGetUsersById>();

        int[] myUserIds = {11, 12};
        System.Object myResults = proxy.moodle_user_get_user_by_id(myUserIds);

        //Console.WriteLine("Trying Function: {0}:{1}", proxy.ToString());
    }
  }
Run Code Online (Sandbox Code Playgroud)

}

我想要使​​用的方法的API文档是:

moodle_user_get_users_by_id: Get users by id.


Arguments
---------
userids (Required)

General structure

list of ( 
int   //user ID …
Run Code Online (Sandbox Code Playgroud)

c# client moodle xml-rpc

4
推荐指数
1
解决办法
3121
查看次数

安装moodle

我想在我的服务器上安装moodle.我在public html文件夹中解压缩了moodle包.此moodle文件夹具有755访问权限集.然后我在同一个文件夹中创建了moodle数据文件夹,public_html并在其中使用777.然后我尝试运行安装,但我总是得到error: Data directory (/home/studentai/***/data) cannot be created by the installer.但我手动创建了它.那问题出在哪里?

installation moodle

4
推荐指数
1
解决办法
3626
查看次数

使用REST服务core_files_upload将文件上传到Moodle

我正在开发一个Android应用程序,它将使用Moodle提供的REST Web服务core_files_upload将内容上传到我的Moodle安装中的用户的私人文件中。core_files_upload采用以下参数:

contextid
component
filearea
itemid
filepath
filename
filecontent
Run Code Online (Sandbox Code Playgroud)

Moodle Web服务的文档不是很详细,因此我将Moodle论坛和Google搜索中的内容拼凑而成,但是我觉得自己已经走到了尽头。从示例中,我看到这些参数采用以下值:

contextid: int - not sure whether this is the userid
component: "user"
filearea: "private"
itemid: 0
filepath: "/"
filename: "filename.jpg"
filecontent: base64 encoding of file
Run Code Online (Sandbox Code Playgroud)

我将我的用户ID用作上下文ID-由于缺少文档,我不确定这是否正确。当我发布这个我收到错误:

{"exception":"moodle_exception","errorcode":"nofile","message":"File not specified"}
Run Code Online (Sandbox Code Playgroud)

我查看了在“ moodle / files / externallib.php”中定义了core_files_upload的位置,当文件内容不存在时会生成此错误消息。

我尝试过发布到测试脚本,并且可以基于base64编码在Moodle服务器上成功创建图像,例如:

<?php
file_put_contents('MyFile.jpg', base64_decode($_POST['filecontent']));
Run Code Online (Sandbox Code Playgroud)

谁能阐明为什么我无法成功上传到Moodle?
contextid是执行上载的用户的userid吗?

php rest android web-services moodle

4
推荐指数
1
解决办法
2337
查看次数

moodle数据根位置不安全错误

我读了moodles文档,它说如果数据根目录必须在网站的公共html文件夹中(请注意我不能在它之外创建它,因为我没有足够的权限,因为我使用的是免费帐户).然后你必须chmod到770并使用htaccess来保护它.现在我在我的域中创建moodle文件夹/ moodle /并且moodle上传文件夹是/ moodle-uploads/uploads /我在/moodle-uploads/.htaccess中设置了.htaccess,其内容是

order deny,allow
deny from all
Run Code Online (Sandbox Code Playgroud)

http://docs.moodle.org/20/en/Creating_Moodle_site_data_directory上指定

但是当我运行自动安装程序脚本时,它仍然说数据根目录不安全

.htaccess moodle

4
推荐指数
1
解决办法
8085
查看次数

单一登录在Moodle与外部登录表单

我正在开发一个moodle站点,我必须使用外部服务来验证用户身份.此SSO服务应该是唯一的身份验证形式.

外部服务的提供者要求我在他们的服务器上使用他们的登录表单,所以我必须禁用moodle登录表单.

我查看了各种身份验证插件,但它们似乎都没有完全按照我的要求去做.

到目前为止,我认为这就是我要做的事情:

  1. 更改login/index.php文件,使其除了将用户重定向到外部登录表单外什么都不做.
  2. SSO服务返回我的Moodle服务器上的新页面,确认提供的凭据.
  3. 从连接到SSO服务的SOAP Web服务收集所有相关用户数据.
  4. 如果在mdl_users表中存在SSO服务提供的(唯一)用户名,则使用相关用户数据更新该行.
  5. 如果用户名不存在则自动生成新用户然后用户登录Moodle站点并前往他们的首页.

这是我第一次与Moodle合作,所以我有几个问题:

  1. 如何自动创建新用户?仅仅为mdl_users添加一个新条目就足够了吗?
  2. 如何签署用户?
  3. 我可以将此类功能作为身份验证插件,还是需要在login/index.php文件中进行黑客攻击?
  4. 如何禁用Moodle自己的用户管理不再需要的部分(即密码重置,从SOAP服务收集的用户信息字段等)?

我真的希望你能帮助我:)

php authentication moodle single-sign-on

4
推荐指数
1
解决办法
5754
查看次数

如何在Moodle中批量删除多个课程

有没有办法一次删除多个课程?我似乎只能一个接一个地做到这一点.

也许有更好的方法,但我还没有找到任何东西.

moodle bulk

4
推荐指数
1
解决办法
2220
查看次数

Moodle中的日志文件在哪里?

我需要找到Moodle中存储日志数据的位置.在Moodle数据库中有一个名为"log"的表,其中存储了日志数据.但是,我可以让Moodle报告显示绝对没有存储在此表中的日志记录数据.我正在使用Moodle版本2.7.8.

logging moodle file

4
推荐指数
1
解决办法
1万
查看次数

Moodle没有样品(演示)数据?

我通常使用wordpress,我可以随时下载演示数据,用演示数据测试一个功能齐全的网站wordpress(我用wordpress导入器导入xml文件).但在moodle中,我搜索了一个演示数据,以测试一个moodle网站,但我找不到它...那么我在哪里可以下载一个演示文件或数据库来测试和查看moodle如何在我自己的localhost中工作.

示例数据wordpress示例:

    <?xml version="1.0" encoding="UTF-8"?>
<channel>
<item>
        <title></title>
        <link>http://themetrust.com/demos/work/?p=125</link>
        <pubDate>Mon, 20 Dec 2010 16:09:14 +0000</pubDate>
        <dc:creator><![CDATA[Henry]]></dc:creator>

        <guid isPermaLink="false">http://themetrust.com/demos/work/?p=125</guid>
        <description></description>
        <content:encoded><![CDATA[ ]]></content:encoded>
        <excerpt:encoded><![CDATA[]]></excerpt:encoded>
        <wp:post_id>125</wp:post_id>
        <wp:post_date>2010-12-20 16:09:14</wp:post_date>
        <wp:post_date_gmt>2010-12-20 16:09:14</wp:post_date_gmt>
        <wp:comment_status>open</wp:comment_status>
        <wp:ping_status>open</wp:ping_status>
        <wp:post_name>125</wp:post_name>
        <wp:status>publish</wp:status>
        <wp:post_parent>0</wp:post_parent>
        <wp:menu_order>4</wp:menu_order>
        <wp:post_type>nav_menu_item</wp:post_type>
        <wp:post_password></wp:post_password>
        <wp:is_sticky>0</wp:is_sticky>
                                <wp:postmeta>
        <wp:meta_key>_menu_item_classes</wp:meta_key>
        <wp:meta_value><![CDATA[a:1:{i:0;s:0:"";}]]></wp:meta_value>
        </wp:postmeta>
                <wp:postmeta>
        <wp:meta_key>_menu_item_target</wp:meta_key>
        <wp:meta_value><![CDATA[]]></wp:meta_value>
        </wp:postmeta>
                <wp:postmeta>
        <wp:meta_key>_menu_item_object</wp:meta_key>
        <wp:meta_value><![CDATA[page]]></wp:meta_value>
        </wp:postmeta>
                <wp:postmeta>
        <wp:meta_key>_menu_item_object_id</wp:meta_key>
        <wp:meta_value><![CDATA[113]]></wp:meta_value>
        </wp:postmeta>
                <wp:postmeta>
        <wp:meta_key>_menu_item_menu_item_parent</wp:meta_key>
        <wp:meta_value><![CDATA[0]]></wp:meta_value>
        </wp:postmeta>
                <wp:postmeta>
        <wp:meta_key>_menu_item_type</wp:meta_key>
        <wp:meta_value><![CDATA[post_type]]></wp:meta_value>
        </wp:postmeta>
                <wp:postmeta>
        <wp:meta_key>_menu_item_xfn</wp:meta_key>
        <wp:meta_value><![CDATA[]]></wp:meta_value>
        </wp:postmeta>
                <wp:postmeta>
        <wp:meta_key>_menu_item_url</wp:meta_key>
        <wp:meta_value><![CDATA[]]></wp:meta_value>
        </wp:postmeta>
                            </item>
</channel>
Run Code Online (Sandbox Code Playgroud)

谢谢 !

php xml moodle demo

4
推荐指数
1
解决办法
2266
查看次数

了解Moodle $上下文

来自Moodle doc:

上下文是Moodle中可以分配角色的空间.

我知道上下文是用于管理Moodle对象的逻辑空间.

我开发了一个带有文件上传的自定义块插件,我使用它file_prepare_draft_areafile_save_draft_area_files函数.有一个$context必须传递的参数,我真的不知道我应该传递什么上下文?这意味着,我想,我应该在哪个逻辑空间中放置我的块插件上传的文件?在我看来,最合乎逻辑的是将上传的文件存储在与我的块插件相关的上下文中.

我试图使用context_block :: instance($ instanceid),但我不知道如何获取$ instanceid param.

  • 在这种情况下我应该使用哪种上下文?
  • 怎么弄?

moodle moodle-api

4
推荐指数
1
解决办法
1506
查看次数