Как сделать так что бы пользователь который добавил данные, только он мог изменять эти данные?

#1 4 мая 2016 в 20:31
Версия 2.5.1 Доброго времени суток друзья, я создаю компонент но на данный момент он без админки, вот такой вопрос?

Есть форма заполнения на сайте и ее могут заполнять пользователи и админ, но пока что редактировать и удалять только может админ

Нужно сделать так что бы пользователь который добавил данные, только он мог изменять эти данные, другие пользователи нет
Таблица базы данных одна.
К примеру:
id | user_id | name | surname | и так далее..

Как сделать так что бы при добавление формы это числилось на счет уникального пользователя для каждого отдельно, только он ну и конечно администратор мог редактировать и удалять данные.

Вот model.php
  1.  
  2. <?php
  3. class modelStreetball extends cmsModel {
  4. public function addBattle($battle){
  5. return $this->insert('photobattles', $battle);
  6. }
  7. public function updateBattle($id, $battle){
  8. return $this->update('photobattles', $id, $battle);
  9. }
  10. public function deleteBattle($id){
  11. $config = cmsConfig::getInstance();
  12. $battle = $this->getBattle($id);
  13. $logos = self::yamlToArray($battle['logo']);
  14. if (is_array($logos)){
  15. foreach($logos as $path){
  16. unlink( $config->upload_path . $path);
  17. }
  18. }
  19. return $this->delete('photobattles', $id);
  20. }
  21. public function getBattle($id){
  22. return $this->getItemById('photobattles', $id);
  23. }
  24. public function getBattles(){
  25. return $this->get('photobattles');
  26. }
  27. public function getBattlesCount(){
  28.  
  29. return $this->getCount('photobattles');
  30. }
  31. }
Вот add.php
  1.  
  2. <?php
  3. class actionStreetballAdd extends cmsAction {
  4. public function run(){
  5. $errors = false;
  6.  
  7. $form = $this->getForm('battle');
  8.  
  9. $is_submitted = $this->request->has('submit');
  10.  
  11. $battle = $form->parse($this->request, $is_submitted);
  12.  
  13. $user = cmsUser::getInstance();
  14.  
  15. if ($is_submitted){
  16.  
  17. $errors = $form->validate($this, $battle);
  18. $errors = $errors && cmsUser::isAllowed('streetball', 'add');
  19.  
  20. if (!$errors){
  21. $battle_id = $this->model->addBattle($battle);
  22. $this->redirectToAction('battle', array($battle_id));
  23. $battle['user_id'] = $user->id;
  24. }
  25.  
  26. if ($errors){
  27. cmsUser::addSessionMessage(LANG_FORM_ERRORS, 'error');
  28. }
  29. }
  30. $template = cmsTemplate::getInstance();
  31.  
  32. $template->render('form_battle', array(
  33. 'do' => 'add',
  34. 'form' => $form,
  35. 'errors' => $errors,
  36. 'battle' => $battle
  37. ));
  38.  
  39. }
  40.  
  41. }
Вот edit.php
  1.  
  2. <?php
  3. class actionStreetballEdit extends cmsAction {
  4. public function run($id=false){
  5. if (!$id) { cmsCore::error404(); }
  6. $user = cmsUser::getInstance();
  7.  
  8. $battle = $this->model->getBattle($id);
  9.  
  10. if (!$battle) { cmsCore::error404(); }
  11.  
  12. $is_edit = $user->is_admin || cmsUser::isAllowed('streetball', 'edit', 'all') ||
  13. ( cmsUser::isAllowed('streetball', 'edit', 'own') && $battle['user_id']==$user->id );
  14. if (!$is_edit) { cmsCore::error404(); }
  15.  
  16. $errors = false;
  17.  
  18. $form = $this->getForm('battle');
  19.  
  20. $is_submitted = $this->request->has('submit');
  21.  
  22. if ($is_submitted){
  23.  
  24. $battle = $form->parse($this->request, $is_submitted);
  25.  
  26. $errors = $form->validate($this, $battle);
  27.  
  28. if (!$errors){
  29. $this->model->updateBattle($id, $battle);
  30. $this->redirectToAction('battle', array($id));
  31. }
  32.  
  33. if ($errors){
  34. cmsUser::addSessionMessage(LANG_FORM_ERRORS, 'error');
  35. }
  36. }
  37.  
  38. $template = cmsTemplate::getInstance();
  39.  
  40. $template->render('form_battle', array(
  41. 'do' => 'edit',
  42. 'form' => $form,
  43. 'errors' => $errors,
  44. 'battle' => $battle
  45. ));
  46.  
  47. }
  48.  
  49. }
Вот battle.php где кнопка удаления и редактирования
  1.  
  2. <?php
  3. $this->setPageTitle($battle['title']);
  4.  
  5. $this->addBreadcrumb(LANG_PHOTOBATTLE_CONTROLLER, $this->href_to(''));
  6. $this->addBreadcrumb($battle['title']);
  7.  
  8. if (cmsUser::isAdmin()){
  9. $this->addToolButton(array(
  10. 'class' => 'edit',
  11. 'title' => LANG_PHOTOBATTLE_EDIT,
  12. 'href' => $this->href_to('edit', $battle['id'])
  13. ));
  14.  
  15. $this->addToolButton(array(
  16. 'class' => 'delete',
  17. 'title' => LANG_PHOTOBATTLE_DELETE,
  18. 'href' => $this->href_to('delete', $battle['id'])
  19. ));
  20. }
  21. ?>
#2 4 мая 2016 в 22:07
Val, Посмотрите если не сложно
#3 4 мая 2016 в 22:58
  1. <?php
  2. $this->setPageTitle($battle['title']);
  3.  
  4. $this->addBreadcrumb(LANG_PHOTOBATTLE_CONTROLLER, $this->href_to(''));
  5. $this->addBreadcrumb($battle['title']);
  6.  
  7. if (cmsUser::isAdmin()){
  8. $this->addToolButton(array(
  9. 'class' => 'edit',
  10. 'title' => LANG_PHOTOBATTLE_EDIT,
  11. 'href' => $this->href_to('edit', $battle['id'])
  12. ));
  13.  
  14. $this->addToolButton(array(
  15. 'class' => 'delete',
  16. 'title' => LANG_PHOTOBATTLE_DELETE,
  17. 'href' => $this->href_to('delete', $battle['id'])
  18. ));
  19. }
  20. ?>
#4 5 мая 2016 в 12:49
А бакенд? Тут же все расписано youtu.be/MmjvTlL59R8?t=1329 (если что, ссылку скопируйте, она с таймстапом)
и 100% информация актуальная, рабочая.
#5 5 мая 2016 в 12:57


А бакенд? Тут же все расписано youtu.be/MmjvTlL59R8?t=1329 (если что, ссылку скопируйте, она с таймстапом)
и 100% информация актуальная, рабочая.

Zau4man

Я сделал сработало но теперь проблемка, не могу решить


Такой вопрос я добавил поле в базу city_id и записываю его в форме

  1. Код PHP:
  2. new fieldCity('city_p', array(
  3. 'title' => LANG_PHOTOBATTLE_CITY,
  4. 'rules' => array(
  5. array('required')
  6. )
  7. )),
Он попадает туда с цифрами на пример 50 и как его вывести в шаблоне правильно?
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.