Изучаем систему вместе (программирование)

#136 22 августа 2012 в 02:57

Мой тебе совет. Очень много ответов как это сделать, ты найдёешь в самом коде системы)

Димитриус
Просто у меня знаний не хватит понять, о чем мне говорит система. smile
Надо учить, учиться, практиковаться.
#137 22 августа 2012 в 02:59
Убедительная просьба форумчан, до сегодняшнего вечера в этой ветке не писать
#138 22 августа 2012 в 11:23
Извините что вмешиваюсь, но проще будет организовать не перемещение всего в корзину (постов, комментов и т.д.), а в самих таблицах данных добавить новое поле, например при удалении поле korzina меняется на 1. А то сначала в корзину перетаскивать, а из основного места удалять, а затем обратно. Т.е. добавить запрос в каждую таблицу того, что мы можем удалить:
  1. ALTER TABLE `cms_table` ADD `korzina` INT( 11 )
Затем, перемещаем в корзину:
  1. UPDATE `cms_table` SET korzina = 1
И восстанавливаем:
  1. UPDATE `cms_table` SET korzina = 0
Хотя есть конечно же и минус, придётся добавлять в запросы вывода информации WHERE korzina!=1.
Тема наверное одна из самых полезных, постараюсь и сам поучаствовать по мере возможности.
#139 22 августа 2012 в 11:43

но проще будет организовать не перемещение всего в корзину

WALTERZ
в общем то проще конечно

придётся добавлять в запросы вывода информации WHERE korzina!=1.

WALTERZ
не придется, там где эвенты на получение записи, можно перехватывать значение этого поля и если 1, то показывать 404.

ALTER TABLE `cms_table` ADD `korzina` INT( 11 )

WALTERZ
лучше
  1. ALTER TABLE `cms_table` ADD `korzina` TINYINT( 1 )
Ну и поле называть не korzina, а как то более понятно и по английски, можно например is_deleted
#140 22 августа 2012 в 12:45
Fuze, Но опять же, как мы можем при перехвате коментария в блоге отправить 404 ?
Сам себе отвечаю… если у записи есть is_delete то мы заменяем содержимое на надписаь Комментарий удалён
#141 22 августа 2012 в 12:47
  1. $this->events[] = 'DELETE_POST';
  2. $this->events[] = 'DELETE_BLOG';
  3. $this->events[] = 'DELETE_BLOG_CAT';
  4. $this->events[] = 'DELETE_BOARD_RECORD';
  5. $this->events[] = 'DELETE_CATALOG_DISCOUNT';
  6. $this->events[] = 'DELETE_CATALOG_CAT';
  7. $this->events[] = 'DELETE_CLUB';
  8. $this->events[] = 'DELETE_COMMENT';
  9. $this->events[] = 'DELETE_ARTICLE';
  10. $this->events[] = 'DELETE_PHOTO';
  11. $this->events[] = 'DELETE_PHOTOS';
  12. $this->events[] = 'DELETE_ALBUM';
  13. $this->events[] = 'DELETE_USER';
  14. $this->events[] = 'DELETE_USER_GROUP';
Вот все эвенты… часть конечно надо убрать категории группы юзеров…
#142 22 августа 2012 в 12:54
Если я чего то не помниаю попрвате...
БУдет сл. образом. событие плагин перехват, ставим метку что это момещено в карзину, но фунция удаления всё ровно будет выполнена и строку будет удалена из базы? или я не прав?
#143 22 августа 2012 в 14:12
Димитриус, по идее все эвенты выполняются ДО самого удаления (лучше проверить, так ли это, если где-то не так, скажите, поправлю в дистрибутиве). В плагине можно просто выполнить редирект куда нужно, не выполняя самого удаления.
#144 22 августа 2012 в 17:39
Небольшой набросок части кода:
  1. <?php
  2.  
  3. class p_isdeleted extends cmsPlugin {
  4.  
  5. public function __construct(){
  6.  
  7. parent::__construct();
  8.  
  9. $this->info['plugin'] = 'isdeleted';
  10. $this->info['title'] = 'Уведомления о удалениях';
  11. $this->info['description'] = 'Отправляет администрации уведомление о удалениях';
  12. $this->info['author'] = 'InstantCMS Team';
  13. $this->info['version'] = '1.0';
  14. $this->config['mail'] = '1';
  15.  
  16.  
  17. $this->events[] = 'DELETE_POST';
  18. $this->events[] = 'DELETE_BLOG';
  19. $this->events[] = 'DELETE_BOARD_RECORD';
  20. $this->events[] = 'DELETE_CATALOG_DISCOUNT';
  21. $this->events[] = 'DELETE_CLUB';
  22. $this->events[] = 'DELETE_COMMENT';
  23. $this->events[] = 'DELETE_PHOTO';
  24. $this->events[] = 'DELETE_PHOTOS';
  25. $this->events[] = 'DELETE_ALBUM';
  26. $this->events[] = 'DELETE_USER';
  27. $this->events[] = 'DELETE_USER_GROUP';
  28.  
  29. }
  30.  
  31. public function install(){
  32. $inCore = cmsCore::getInstance();
  33. $inDB = cmsDatabase::getInstance();
  34.  
  35. $sql="ALTER TABLE `cms_content` ADD `is_deleted` TINYINT( 1 )" ;
  36. $inDB->query($sql);
  37.  
  38. return parent::install();
  39.  
  40. }
  41.  
  42. public function upgrade(){
  43. return parent::upgrade();
  44. }
  45.  
  46. public function execute($event, $item){
  47.  
  48. parent::execute();
  49. $inCore = cmsCore::getInstance();
  50. $inDB = cmsDatabase::getInstance();
  51. $inUser = cmsUser::getInstance();
  52.  
  53. $this->addHeads($event);
  54. switch ($event){
  55. case 'DELETE_POST':
  56. $logindel = $inUser->login;
  57. $nickdel = $inUser->nickname;
  58. cmsUser::sendMessage(USER_UPDATER,$this->config['mail'],"
  59. <b style='color:#ff0000;'>Уведомляем об удалении записи!</b><br>Пользователь <a href='/users/$logindel'>$nickdel</a> удалил запись.");
  60. cmsCore::addSessionMessage('Запись успешно отправлена в мусорку.', 'success');
  61. break;
  62.  
  63. case 'DELETE_BLOG':
  64. $message = "Текст администратору";
  65. break;
  66.  
  67. return $html;
  68. break;
  69.  
  70. }
  71.  
  72. return $item;
  73. }
  74. }
  75.  
  76. ?>
\\
как домой приеду, дополним :)
#145 22 августа 2012 в 21:12
продолжение будет завтра вечером…
#146 23 августа 2012 в 11:15
Дико извиняюсь, написал и не разъяснил. Если что-то непонятно в коде выше, пишите, с радостью отвечу.
Жду участия Димитриуса и продолжим :)
#147 23 августа 2012 в 11:30
Ну что посмотрим по коду. Очень полезно повторяющиеся однотипные действия выделять в функции это упрощается разработку. Вот например на каждый эвонт у нас будет отправка того же сообщения.
  1. function SendMesForAdmin ($item,$typeitem){
  2. return
  3. }
#148 23 августа 2012 в 12:23

однотипные действия выделять в функции

Димитриус
В данном случае в метод класса, видимо приватный

  1. private function sendMessageForAdmins ($item_link){
  2.  
  3. return;
  4.  
  5. }
#149 23 августа 2012 в 12:24
Здравствуйте!
Не подскажете как переделать этот php код и поставить в xxxx.tpl файл!

Код:
  1. <?php
  2. }
  3. echo '<div id="usermessages"><table width="100%" cellpadding="3" cellspacing="3">';
  4. if ($cfg['showtype'] == 'avatar') { echo '<tr><td align="center">'.usrImage($user_id).'</td></tr>'; }
  5. echo '<tr><td align="center"><a id="mymess" href="/users/'.$user_id.'/messages.html">';
  6. echo '<strong id="mess_nojs">ХХХХХХХХХХХХХ</strong>';
  7. echo '<div id="mess_ok"><strong>ХХХХХХХХХХХХХХ</strong></div>';
  8. echo '</a></td></tr></table></div>';
  9. return true;
  10. }
  11. ?>
#150 23 августа 2012 в 12:47

В данном случае в метод класса, видимо приватный

Fuze
Да спасибо) Забыл, что это класс)))
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.