2

Okay, so I am completely new to Joomla and I am trying to edit the source files of a component I built using component-creator.com.

I have a database which stores different data for multiple different users, and I want to design several views where the logged-in user can view only the data associated with their own user name in the database. Currently, every user can see a listing of the data of every other user in the database, which is unacceptable for security reasons. I assume that I need to somehow retrieve the current session user id and use a WHERE query to filter the list view down to only the database entries associated with that user id.

First off, what files do I need to edit? Component-creator seems to suggest here that I need to edit views/students/view.html.php, while some other forums seem to point to models/students.php. models/students.php seems to already have several SQL queries with chaining and WHERE clauses, but I wanted to make sure.

Secondly, how do I retrieve and/ or pass the current session user id? Do I somehow need to pass that variable from views/students/tmpl/default.php, or can I retrieve it directly from within models/students.php?

Any insight is appreciated. Thank you!

1 Answer 1

2

As you've probably gathered already, Joomla is an MVC (model, view controller) content management system, so you're database queries will be located in the model:

models/students.php

As for current user data, you can get the current user object like so:

$user = JFactory::getUser();

Or if it's the actual session ID you wish to get:

$session = JFactory::getSession();
echo $session->getId();

Both of which you can access in any part of the component, so yes, that includes the model.

Hope this helps

2
  • Thank you! That is helpful. Now I am just struggling with the SQL syntax.
    – Nathanael
    Apr 11, 2017 at 17:09
  • 1
    Ask a new question for that and be sure to show us what the syntax error is and the code causing it
    – Lodder
    Apr 11, 2017 at 17:10

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.