If you want to create a new page for developers, you should create it on the Moodle Developer Resource site.

Student projects/Social Networking features

From MoodleDocs

Programmer: Luiz Eduardo Laydner Cruz

This project is being tracked in detail here: [ MDL-10169]


Explore the possibilities of social networking features by expanding the user profile page:

  • add user tags that describe interests etc, as links to "interest pages" eg constructivism
  • interest pages that contain information about all the people who share that interest, as well as blog entries that use that tag, google searches, other info using standard Moodle blocks etc
  • allow users to add other users as "friends", which are displayed on their user profile pages
  • think about controls to prevent abuse of these features in a school environment.
  • allow users to specify an external RSS feed to their own external blog, parsing the feed insert entries (optionally selecting by tag) as internal blog entries for that user, adding new tags/permissions as specified, with links back to external entry etc.
  • if time, explore deeper integrations with Youtube, Flickr, MySpace, Facebook, Elgg etc.

Major Milestones

M1 - Tags

Description: Tags will enable users of a moodle site to describe and share their interests in a systematic way, increasing the potential for interactions among them. Tags will enable users with a certain interest to be found more easily. They will also make it easier for users to find documents, presentations, forum topics and blog entries related to a subject.

Use Scenarios

Searching for people with a given interest
Suppose, for example, that I am a PhD student from the computer science department writing a paper about computer graphics algorithms for diagnosis of heart diseases. It would be great to get some feedback on the paper from someone whose research specialty is Cardiac Tomography or Heart Disease Diagnosis. Knowing that my school’s Medical Research department uses Moodle intensely for their courses, I go to a “Search tags” page and I put “Cardiac Tomography” in the search input field. Since this tag (Cardiac Tomography) is non-existent in the system, I get as a result a list of close matches: cardiac surgery, cardiac diseases, computed tomography. I click on the cardiac diseases tag and I get redirected to a page which contains all entities in the system (Users, Blog entries, Forum topics and Files) labeled with this tag. The search results in 4 related tags, 20 members that have interest in cardiac diseases, 9 files, 5 blog entries and some forum topics. I click on a member and, by looking at his interests, I believe he will be able to provide me good feedback on my research. So I get in touch with him.

Searching for a tag

Page with entities labeled with an existing tag

Describing my interests

For people with similar interests to mine to be able to find me, I need to publish what those interests are. So, if I am a history teacher who wants to tell the world that I am very interested in Roman Gladiators, I would go to the “Edit profile” page and in the “Interests” section I might want to add the “Roman Gladiators” tag. I type it and then I click “Add”. If the system determines there’s already a tag with that name, it adds it to my interests. Otherwise, it returns a list with possibly related tags of similar names. If I can’t find a tag that describes my interest well enough, I might choose to create a new tag (“Roman Gladiators”) by clicking on a link. All my interests will be displayed in my profile page, so that other users can get to know me better.

Editing my interests

Searching for a tag

Interests shown in my profile page

Tagging resources, blog entries and forum topics

When a user creates blog entries or uploads files, he will be able to label them with tags. This will make it easier for other users to find stuff related to an interest.

Cleaning up and filtering Tags

Tags that eventually become orphans (no users, files, forum topics or blog entries associated) will automatically be deleted. To prevent the creation of tags with inappropriate content, the administrator will be able to define a list of banned words. A tag that contains a “bad word” will not be created.

Major tasks

  • Initial DB schema for tags
  • Basic “tags API”
  • Tags for users’ interests
    • Update user profile page (view and edit)
  • Tags for blog entries
  • Tags for forum topics
  • Tags for files
  • Tags search page (to search for tags in the system)
  • Page associated with a tag (to search entities of the system labeled with an existing tag)
  • Tags administration
    • Tags cleanup
    • Tags filtering
  • AJAX improvements
    • Auto-complete when adding or searching for a tag

M2 - Friends

Description: A “friends list” in moodle will be very helpful for users to connect and stay in touch with peers. Social networking tools such as Facebook and Myspace have shown that this is a concept of great value to users. This feature would increase the involvement of users in the community, making them feel connected to it and to their colleagues. Members would be able to add friends to their list, which would appear in their profile.

Use scenarios

Adding someone as a friend
When looking for people interested in Partial Differential Equations in my university’s moodle site, I find a professor, Herbert, I had 3 years ago. Since we had a very good relationship, I might want to add him to my friends list. I go to his profile, and click on the “Add as Friend” button. This will send Herbert a confirmation e-mail, asking whether he wants me on his friends list. If he accepts my request, I get added to his list and he gets added to mine. That way, I’m able to stay in touch with him, even though I moved on to another university to get my masters on PDEs.


Managing friends list

Major Tasks

  • Initial DB schema for friends
  • API for friends
  • Friends list in profile page
  • Friends list management page
  • AJAX improvements

Database structures

Tasks and Timeline

See also

Back: Student projects