модуль будет скорее всего представлен в виде файла, содержащего класс модуля
Как ограничить модулю доступ к базе данных в пределах одной таблицы
судя по всему будет аццкая смесь из запросов к базе и логики. В общем одним классом-файлом тут не обойтись
Почитайте про инверсию контроля и внедрение зависимости, вопросы отпадут.
Получится что пользовательский модуль будет использовать только то, что ваше "ядро" ему передаст и ничего более.