Создание плагина

 
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 1074
Пробую писать плагин, с инсталлом разобрался, но не могу найти на примерах функцию удаления плагина. Например при включении плагина я произвожу некие действия с бд добавляя в таблицу поля, как мне при выключении плагина их удалить?
я cделал тиц 20 за 300р в месяц / 15$ в день ничего не делая / почему контекст лучше тизеров
Посетитель
small user social cms
Медаль
Сообщений: 446
picaboo, не видел такого чтобы при выключении плагина, модуля и таблицы в БД удалялись.
Сужу по простым примерам и на своем опыте - могу ошибаться.
Редактировалось: 1 раз (Последний: 3 ноября 2013 в 23:27)
Просто так...
Реклама
cms
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 1074
я перешерстил все мне доступные, все оставляют после себя "мусор".

есть функции public function install() и public function upgrade(){

больше не могу найти ничего, даже в plugin.class.php нет ничего
я cделал тиц 20 за 300р в месяц / 15$ в день ничего не делая / почему контекст лучше тизеров
Посетитель
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1224
Такой нет...
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 1074
всё, спасибо, разобрался. удалять тоже можно.
я cделал тиц 20 за 300р в месяц / 15$ в день ничего не делая / почему контекст лучше тизеров
Посетитель
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1224
picaboo:
всё, спасибо, разобрался. удалять тоже можно.
Какое решение нашли?
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 1074
сделал другой плагин, который удаляет при установке все что создал первый.:)
я cделал тиц 20 за 300р в месяц / 15$ в день ничего не делая / почему контекст лучше тизеров
Посетитель
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1224
эмм я бы сделал иначе..

Вот так:

создал файл
uninstall.php

Код PHP:
  1. define("VALID_CMS", 1);
  2.  
  3. include('core/cms.php');
  4. $inCore = cmsCore::getInstance();
  5. if (!$inCore->getPluginId('имя плагина')){
  6. //так плагин удалён теперь можно удалить остатки
  7. //выполняем запросы к базе данных
  8.  
  9. echo 'Остатки плагина ИМЯ очищены';
  10. }
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 1074
думал об этом, но не знаю как привязать к кнопке удаления выполнение скрипта или вызов файла, а так получится что нужно руками вызывать.
пока сделал так
Код PHP:
  1.  
  2. <?php
  3. class p_sdf_uninstall extends cmsPlugin {
  4.  
  5.  
  6. public function __construct(){
  7.  
  8. parent::__construct();
  9.  
  10. $this->info['plugin'] = 'p_sdf_uninstall';
  11. $this->info['title'] = 'SDF Plugin unistall';
  12. $this->info['description'] = 'Удаление плагина SDF.Нажмите для удаления плагина SDF';
  13. $this->info['author'] = 'me';
  14. $this->info['version'] = '1.0';
  15. }
  16.  
  17. public function install(){
  18.  
  19. //
  20. //удаляем что создали
  21. //
  22. //
  23.  
  24. // return parent::install(); не нужно чтобы не светится в установленных
  25.  
  26. }
  27. }
  28. ?>
  29.  
Редактировалось: 1 раз (Последний: 4 ноября 2013 в 01:26)
я cделал тиц 20 за 300р в месяц / 15$ в день ничего не делая / почему контекст лучше тизеров
Модератор
small user social cms
МедальКубок зрительских симпатийПочетный донор проекта
Сообщений: 964
picaboo:
сделал другой плагин, который удаляет при установке все что создал первый.:)
Как-то не совсем по фен-шую получается. Вариант Димитриуса тоже не то. Нужно каждый раз лезть по фтп. Лучше будет так:
1. Открываем файл /core/classes/plugin.class.php и создаем метод
Код PHP:
  1.  
  2. public function remove($plugin_id) {
  3.  
  4. return $this->inCore->removePlugin($plugin_id);
  5.  
  6. }
  7.  
2. Далее хакнем админку, файл /admin/applets/install.php. Заменяем строку 510:
Код PHP:
  1. $inCore->removePlugin($plugin_id);
на:
Код PHP:
  1.  
  2. $plugin = $inCore->loadPlugin($plugin_id);
  3. if (!$plugin){ cmsCore::redirectBack(); }
  4. $plugin->remove($plugin_id);
  5.  
3. В принципе и всё. Далее в файле плагина plugin.php можно вставить следующий метод:
Код PHP:
  1.  
  2. public function remove($plugin_id){
  3. //далее выполняем какие-то действия, которые необходимо выполнить перед удалением
  4.  
  5. //непосредственно само удаление плагина
  6. return parent::remove($plugin_id);
  7. }
  8.  
Как-то так. Не проверял, но вроде бы должно работать.
Хватит париться, живи как нравится!
Посетитель
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1224
Марат:
Как-то не совсем по фен-шую получается. Вариант Димитриуса тоже не то. Нужно каждый раз лезть по фтп. Лучше будет так:
Марат, согласен. Мне знаком такой вариант решения, но такая задача не ставилась.
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 1074
Марат, спасибо, но к сожалению тут если для себя - то можно хакнуть движок и вариант отличный, а если для общего пользования, то без внесения в дистрибутив - бессмысленно sad и проще сделать плагин для удаления плагина.
я cделал тиц 20 за 300р в месяц / 15$ в день ничего не делая / почему контекст лучше тизеров
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 1074
Вообще счас в голову пришла дурная мысль, что при инсталляции плагина, заставлять его создавать плагин для удаления, а при запуска плагина удаления - после выполнения кода удалять самому себя.

В принципе например инсталлятор форума SMF умеет сам создавать папки и записывать туда файл, а после того как закончилась инсталляция - удаляет самостоятельно инсталлятор на последнем шаге инсталляции.

Но это похоже как до Луны на ходулях добираться smile то еще извращение
я cделал тиц 20 за 300р в месяц / 15$ в день ничего не делая / почему контекст лучше тизеров
Посетитель
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1897
picaboo:
Вообще счас в голову пришла дурная мысль, что при инсталляции плагина, заставлять его создавать плагин для удаления, а при запуска плагина удаления - после выполнения кода удалять самому себя.

Кстати, это мысль из разряда The best! Удобно и практично...
Контент для ваших проектов. Копирайт всех видов от профессионалов. Создание и продвижение сайтов, реклама.
В начало страницы
Предыдущая темаСледующая тема Перейти на форум:
Быстрый ответ
Чтобы писать на форуме, зарегистрируйтесь или авторизуйтесь.