public function getcontent()
 {
     $widget = tpostcatwidget::i();
     $about = tplugins::getabout(tplugins::getname(__FILE__));
     $args = targs::i();
     $id = (int) tadminhtml::getparam('idwidget', 0);
     if (isset($widget->items[$id])) {
         $item = $widget->items[$id];
         $args->mode = 'edit';
         $args->idwidget = $id;
     } else {
         $item = array('title' => '', 'content' => '', 'template' => 'widget', 'cats' => array());
         $args->mode = 'add';
         $args->idwidget = 0;
     }
     $cats = tposteditor::getcategories($item['cats']);
     $html = $this->html;
     $html->section = 'widgets';
     $args->add($item);
     $args->widgettitle = $item['title'];
     $args->template = tadminhtml::array2combo(self::gettemplates(), $item['template']);
     $args->formtitle = $item['title'] == '' ? $this->lang->widget : $item['title'];
     $result = $html->adminform('
 [text=widgettitle]
 [editor=content]
 [combo=template]
 [hidden=idwidget]
 [hidden=mode]' . sprintf('<h4>%s</h4>', $about['cats']) . $cats, $args);
     $result .= $this->getlist($widget);
     return $result;
 }
 public function getcontent()
 {
     $plugin = tlivejournalposter::i();
     $dir = dirname(__FILE__) . DIRECTORY_SEPARATOR;
     if ($plugin->template == '') {
         $plugin->template = file_get_contents($dir . 'livejournalposter.tml');
     }
     $about = tplugins::getabout(tplugins::getname(__FILE__));
     $lang = tplugins::getlangabout(__FILE__);
     $html = tadminhtml::i();
     $html->section = $lang->section;
     $args = targs::i();
     $args->add($about);
     $args->add($plugin->data);
     $args->public = 'public' == $plugin->privacy;
     $args->private = 'private' == $plugin->privacy;
     $args->friends = 'friends' == $plugin->privacy;
     return $html->adminform('[text=host] [text=login] [password=password] [text=community]
 <p><strong>$lang.privacy</strong>
 <label><input name="privacy" type="radio" value="public" $public/>$lang.public</label>
 <label><input name="privacy" type="radio" value="private" $private />$lang.private</label>
 <label><input name="privacy" type="radio" value="frinds" $friends/>$lang.friends</label>
 </p>
 
 [editor=template]', $args);
 }
function tthemegeneratorInstall($self)
{
    if (!ttheme::exists('generator')) {
        die('Theme "generator" not exists');
    }
    //litepublisher::$urlmap->addget('/theme-generator.htm', get_class($self));
    $about = tplugins::getabout(tplugins::getname(__FILE__));
    $name = basename(dirname(__FILE__));
    $merger = tlocalmerger::i();
    $merger->lock();
    $merger->add('themegenerator', "plugins/{$name}/res/scheme.ini");
    $merger->add('themegenerator', sprintf('plugins/%s/res/%s.ini', $name, litepublisher::$options->language));
    $merger->unlock();
    $js = tjsmerger::i();
    $js->lock();
    $js->add('themegenerator', '/plugins/colorpicker/js/colorpicker.js');
    $js->add('themegenerator', '/js/swfupload/swfupload.js');
    $js->add('themegenerator', sprintf('/plugins/%s/themegenerator.min.js', basename(dirname(__FILE__))));
    $js->addlang('themegenerator', 'lang', array('upload_header' => $about['upload_header'], 'upload_logo' => $about['upload_logo']));
    $js->unlock();
    $dir = litepublisher::$paths->files . 'themegen';
    if (!is_dir($dir)) {
        mkdir($dir, 0777);
        @chmod($dir, 0777);
        file_put_contents($dir . DIRECTORY_SEPARATOR . 'index.htm', ' ');
        @chmod($dir . DIRECTORY_SEPARATOR . 'index.htm', 0666);
    }
    tcron::i()->addnightly(get_class($self), 'cron', null);
    $self->lock();
    $self->title = $about['name'];
    $views = tviews::i();
    $self->idview = $views->add($about['name']);
    $view = tview::i($self->idview);
    $view->themename = 'generator';
    $self->leftview = $views->add($about['left']);
    $view = tview::i($self->leftview);
    $view->themename = 'generator-left';
    $self->rightview = $views->add($about['right']);
    $view = tview::i($self->rightview);
    $view->themename = 'generator-right';
    $self->url = '/theme-generator.htm';
    $self->content = get_themegen_content($self);
    $self->parseselectors();
    $menus = tmenus::i();
    $menus->lock();
    $menus->add($self);
    $fake = new tfakemenu();
    $fake->title = $about['left'];
    $fake->url = $self->url . '?type=left';
    $fake->parent = $self->id;
    $menus->add($fake);
    $fake = new tfakemenu();
    $fake->title = $about['right'];
    $fake->url = $self->url . '?type=right';
    $fake->parent = $self->id;
    $menus->add($fake);
    $menus->unlock();
    $self->unlock();
    litepublisher::$urlmap->setvalue($self->idurl, 'type', 'get');
}
 public function getcontent()
 {
     $widget = tsubcatwidget::i();
     $about = tplugins::getabout(tplugins::getname(__FILE__));
     $html = $this->html;
     $args = targs::i();
     $id = (int) tadminhtml::getparam('idwidget', 0);
     if (isset($widget->items[$id])) {
         $args->add($widget->items[$id]);
         $args->sort = tadminhtml::array2combo(tlocal::admin()->ini['sortnametags'], $widget->items[$id]['sortname']);
         $args->idwidget = $id;
         $args->data['$lang.invertorder'] = $about['invertorder'];
         $args->formtitle = $widget->gettitle($id);
         return $html->adminform('
   [combo=sort]
   [checkbox=showsubitems]
   [checkbox=showcount]
   [text=maxcount]
   [hidden=idwidget]', $args);
     }
     $tags = array();
     foreach ($widget->items as $id => $item) {
         $tags[] = $item['idtag'];
     }
     $args->formtitle = $about['formtitle'];
     return $html->adminform(tposteditor::getcategories($tags), $args);
 }
function tpollsUninstall($self)
{
    tcssmerger::i()->deletestyle(dirname(__FILE__) . '/stars.min.css');
    tjsonserver::i()->unbind($self);
    tlocalmerger::i()->deleteplugin(tplugins::getname(__FILE__));
    $jsmerger = tjsmerger::i();
    $jsmerger->lock();
    $jsmerger->deletefile('default', '/plugins/polls/polls.client.min.js');
    $jsmerger->deletetext('default', 'poll');
    $jsmerger->unlock();
    $adminmenus = tadminmenus::i();
    $adminmenus->deletetree($adminmenus->url2id('/admin/plugins/polls/'));
    litepublisher::$classes->delete('tpolltypes');
    litepublisher::$classes->delete('tpollsman');
    litepublisher::$classes->delete('tpullpolls');
    litepublisher::$classes->delete('tadminpolltemplates');
    litepublisher::$classes->delete('tadminpolltypes');
    litepublisher::$classes->delete('tadminpolloptions');
    litepublisher::$classes->delete('tadminpolls');
    $manager = tdbmanager::i();
    $manager->deletetable($self->table);
    $manager->deletetable($self->users1);
    $manager->deletetable($self->users2);
    $manager->deletetable($self->votes);
    $dir = litepublisher::$paths->data . 'polls';
    tfiler::delete($dir, true, true);
}
/**
* Lite Publisher
* Copyright (C) 2010 - 2013 Vladimir Yushko http://litepublisher.ru/ http://litepublisher.com/
* Dual licensed under the MIT (mit.txt)
* and GPL (gpl.txt) licenses.
**/
function tfaqmenuInstall($self)
{
    $about = tplugins::getabout(tplugins::getname(__FILE__));
    $self->title = $about['title'];
    $self->content = $about['content'];
    $menus = tmenus::i();
    $menus->add($self);
}
 public function gethtml()
 {
     $template = ttemplate::i();
     $s = $template->getjavascript('/plugins/slideshow/slideshow.min.js');
     $about = tplugins::getabout(tplugins::getname(__FILE__));
     $s .= $about['html'];
     return sprintf('[html]%s[/html]', $s);
 }
示例#8
0
 public function uninstall()
 {
     turlmap::unsub($this);
     $template = ttemplate::i();
     $template->deletefromhead($this->get_head());
     $merger = tlocalmerger::i();
     $merger->deleteplugin(tplugins::getname(__FILE__));
     litepublisher::$urlmap->clearcache();
 }
 public function getcontent()
 {
     $plugin = tmarkdownplugin::i();
     $about = tplugins::getabout(tplugins::getname(__FILE__));
     $args = targs::i();
     $html = tadminhtml::i();
     $args->formtitle = $about['name'];
     $args->data['$lang.deletep'] = $about['deletep'];
     $args->deletep = $plugin->deletep;
     return $html->adminform('[checkbox=deletep]', $args);
 }
 public function getcontent()
 {
     $plugin = tyoutubeplayer::i();
     $about = tplugins::getabout(tplugins::getname(__FILE__));
     $args = targs::i();
     $args->formtitle = $about['formtitle'];
     $args->data['$lang.template'] = $about['template'];
     $args->template = $plugin->template;
     $html = tadminhtml::i();
     return $html->adminform('[editor:template]', $args);
 }
 public function getcontent()
 {
     $plugin = tcategoriesmenu::i();
     $about = tplugins::getabout(tplugins::getname(__FILE__));
     $args = targs::i();
     $args->cats = tposteditor::getcategories($plugin->exitems);
     $args->formtitle = $about['formtitle'];
     //    $args->data['$lang.before'] = $about['before'];
     $html = tadminhtml::i();
     return $html->adminform('$cats', $args);
 }
示例#12
0
 public function gethead()
 {
     $url = litepublisher::$site->files . '/plugins/' . tplugins::getname(__FILE__);
     $about = tplugins::getabout(tplugins::getname(__FILE__));
     $result = '<link rel="stylesheet" href="' . $url . '/ed.css" type="text/css" />';
     $result .= '<script type="text/javascript">';
     $result .= '    var URLpromt = "' . $about['urlpromt'] . '";';
     $result .= ' var IMGpromt = "' . $about['imgpromt'] . '";';
     $result .= '</script>';
     $result .= '<script type="text/javascript" src="' . $url . '/ed.js"></script>';
     return $result;
 }
/**
* Lite Publisher
* Copyright (C) 2010 - 2013 Vladimir Yushko http://litepublisher.ru/ http://litepublisher.com/
* Dual licensed under the MIT (mit.txt)
* and GPL (gpl.txt) licenses.
**/
function tlazybuttonsInstall($self)
{
    $about = tplugins::getabout(tplugins::getname(__FILE__));
    $o = array('lang' => litepublisher::$options->language, 'twituser' => '', 'show' => $about['show'], 'hide' => $about['hide']);
    $jsmerger = tjsmerger::i();
    $jsmerger->lock();
    $jsmerger->add('default', dirname(__FILE__) . '/lazybuttons.min.js');
    $jsmerger->addtext('default', 'lazybuttons', sprintf('var lazyoptions = %s;', json_encode($o)));
    $jsmerger->unlock();
    $parser = tthemeparser::i();
    $parser->parsed = $self->themeparsed;
    ttheme::clearcache();
}
示例#14
0
 public function getcontent()
 {
     $plugin = tpostcontentplugin::i();
     $html = tadminhtml::i();
     $args = targs::i();
     $about = tplugins::getabout(tplugins::getname(__FILE__));
     $args->formtitle = $about['formtitle'];
     $args->data['$lang.before'] = $about['before'];
     $args->data['$lang.after'] = $about['after'];
     $args->before = $plugin->before;
     $args->after = $plugin->after;
     return $html->adminform('[editor=before] [editor=after]', $args);
 }
示例#15
0
 public function getcontent()
 {
     $result = parent::getcontent();
     $args = targs::i();
     $args->script = $this->script;
     $args->ignorelink = $this->ignorelink;
     $about = tplugins::getabout(tplugins::getname(__FILE__));
     $args->scriptlabel = $about['scriptlabel'];
     $args->ignorelinklabel = $about['ignorelink'];
     $tml = file_get_contents(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'form.tml');
     $html = tadminhtml::i();
     $result .= $html->parsearg($tml, $args);
     return $result;
 }
 public function getcontent()
 {
     $tml = '[text:user]
 [editor:se]';
     $html = tadminhtml::i();
     $args = targs::i();
     $about = tplugins::getabout(tplugins::getname(__FILE__));
     $args->formtitle = $about['formtitle'];
     $args->data['$lang.user'] = $about['user'];
     $args->data['$lang.se'] = $about['se'];
     $args->user = $this->user;
     $args->se = $this->se;
     return $html->adminform($tml, $args);
 }
 public function getcontent()
 {
     $plugin = tshortcode::i();
     $about = tplugins::getabout(tplugins::getname(__FILE__));
     $args = targs::i();
     $s = '';
     foreach ($plugin->items as $name => $value) {
         $s .= "{$name} = {$value}\n";
     }
     $args->codes = $s;
     $args->formtitle = $about['formtitle'];
     $args->data['$lang.codes'] = $about['codes'];
     $html = tadminhtml::i();
     return $html->adminform('[editor=codes]', $args);
 }
 public function getcontent()
 {
     $contact = tcontactform::singleinstance('tcontactform');
     $about = tplugins::getabout(tplugins::getname(__FILE__));
     $args = targs::i();
     $items = '';
     foreach ($contact->data['extra'] as $name => $title) {
         $items .= "{$name} ={$title}\n";
     }
     $args->items = $items;
     $args->formtitle = $about['formtitle'];
     $args->data['$lang.items'] = $about['items'];
     $html = tadminhtml::i();
     return $html->adminform('[editor=items]', $args);
 }
/**
* Lite Publisher
* Copyright (C) 2010 - 2015 Vladimir Yushko http://litepublisher.ru/ http://litepublisher.com/
* Dual licensed under the MIT (mit.txt)
* and GPL (gpl.txt) licenses.
**/
function tcontactsiteInstall($self)
{
    $theme = ttheme::i();
    $args = targs::i();
    $about = tplugins::getabout(tplugins::getname(__FILE__));
    $args->add($about);
    $self->title = $about['title'];
    $self->subject = $about['subject'];
    $self->success = $theme->parsearg('<p><strong>$success</strong></p>', $args);
    $self->errmesg = $theme->parsearg('<p><strong>$errmesg</strong></p>', $args);
    $form = $theme->parsearg(file_get_contents(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'form.tml'), $args);
    $self->data['content'] = $form;
    $self->data['rawcontent'] = $form;
    $self->order = 9;
    $menus = tmenus::i();
    $menus->add($self);
}
 public function getcontent()
 {
     $plugin = tbackup2dropbox::i();
     $html = tadminhtml::i();
     $args = targs::i();
     $about = tplugins::getabout(tplugins::getname(__FILE__));
     tlocal::admin()->ini['dropbox'] = $about;
     $lang = tlocal::i('dropbox');
     $args->add($plugin->data);
     $args->formtitle = $about['head'];
     $form = $html->adminform('[text=email] [password=password] [text=dir] [checkbox=uploadfiles] [checkbox=onlychanged]] [checkbox=useshell]', $args);
     $form .= '<form name="createnowform" action="" method="post" >
 <input type="hidden" name="createnow" value="1" />
 <p><input type="submit" name="create_now" value="' . $lang->createnow . '"/></p>
 </form>';
     return $form;
 }
 public function getcontent()
 {
     $plugin = tcustomtitle::i();
     $about = tplugins::getabout(tplugins::getname(__FILE__));
     $args = targs::i();
     $args->post = $plugin->post;
     $args->tag = $plugin->tag;
     $args->home = $plugin->home;
     $args->archive = $plugin->archive;
     $args->formtitle = $about['formtitle'];
     $args->data['$lang.tag'] = $about['tagcat'];
     $html = tadminhtml::i();
     return $html->adminform('[text=post]
 [text=tag]
 [text=home]
 [text=archive]', $args);
 }
示例#22
0
 public function getcontent()
 {
     $result = parent::getcontent();
     $tagsmap = '';
     foreach ($this->tagsmap as $key => $val) {
         $tagsmap .= "{$key} = {$val}\n";
     }
     $args = targs::i();
     $args->tagsmap = $tagsmap;
     $args->script = $this->script;
     $about = tplugins::getabout(tplugins::getname(__FILE__));
     $args->maplabel = $about['maplabel'];
     $args->scriptlabel = $about['scriptlabel'];
     $tml = file_get_contents(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'form.tml');
     $html = tadminhtml::i();
     $result .= $html->parsearg($tml, $args);
     return $result;
 }
 public function getcontent()
 {
     $openid = topenid::i();
     $args = targs::i();
     $args->confirm = $openid->confirm;
     $args->usebigmath = $openid->usebigmath;
     $args->trusted = implode("\n", $openid->trusted);
     $tml = '[checkbox:confirm]
 [checkbox:usebigmath]
 [editor:trusted]';
     $about = tplugins::getabout(tplugins::getname(__FILE__));
     $args->formtitle = $about['formtitle'];
     $args->data['$lang.confirm'] = $about['confirm'];
     $args->data['$lang.usebigmath'] = $about['usebigmath'];
     $args->data['$lang.trusted'] = $about['trusted'];
     $html = tadminhtml::i();
     return $html->adminform($tml, $args);
 }
示例#24
0
 public function install()
 {
     if (!file_exists(litepublisher::$paths->home . 'mobile' . DIRECTORY_SEPARATOR . 'index.php')) {
         die("folder 'mobile' with requried files not exists. Please copy required folder from plugin.");
     }
     $about = tplugins::getabout(tplugins::getname(__FILE__));
     $views = tviews::i();
     if (!isset($views->defaults['mobile'])) {
         $views->defaults['mobile'] = $views->add($about['menutitle']);
     }
     $idview = $views->defaults['mobile'];
     $view = tview::i($idview);
     if ($view->themename != 'pda') {
         $view->themename = 'pda';
         $view->disableajax = true;
         $view->save();
     }
     $menus = tmenus::i();
     $menus->addfake('/mobile/', $about['menutitle']);
     $robot = trobotstxt::i();
     $robot->AddDisallow('/mobile/');
     litepublisher::$urlmap->clearcache();
 }
 public function getcontent()
 {
     $widget = texcerptslide::i();
     $about = tplugins::getabout(tplugins::getname(__FILE__));
     $html = $this->html;
     $args = targs::i();
     $id = (int) tadminhtml::getparam('idwidget', 0);
     if (isset($widget->items[$id])) {
         $args->add($widget->items[$id]);
         $args->idwidget = $id;
         $args->data['$lang.invertorder'] = $about['invertorder'];
         $args->formtitle = $widget->gettitle($id);
         return $html->adminform('[text=maxcount]
   [checkbox=invertorder]
   [hidden=idwidget]', $args);
     }
     $tags = array();
     foreach ($widget->items as $id => $item) {
         $tags[] = $item['idtag'];
     }
     $args->formtitle = $about['formtitle'];
     return $html->adminform(tposteditor::getcategories($tags), $args);
 }
function tfoafUninstall($self)
{
    $merger = tlocalmerger::i();
    $merger->deleteplugin(tplugins::getname(__FILE__));
    $actions = TXMLRPCAction::i();
    $actions->deleteclass(get_class($self));
    $urlmap = litepublisher::$urlmap;
    $urlmap->lock();
    turlmap::unsub($self);
    $classes = litepublisher::$classes;
    $classes->lock();
    $classes->delete('tfoafutil');
    $classes->delete('tprofile');
    $classes->delete('tfriendswidget');
    $classes->delete('tadminfoaf');
    $classes->unlock();
    $admin = tadminmenus::i();
    $admin->lock();
    $admin->deleteurl('/admin/foaf/profiletemplate/');
    $admin->deleteurl('/admin/foaf/profile/');
    $admin->deleteurl('/admin/foaf/');
    $admin->unlock();
    $urlmap->unlock();
    if ($self->dbversion) {
        $manager = tdbmanager::i();
        $manager->deletetable($self->table);
    }
    $template = ttemplate::i();
    $template->deletefromhead('	<link rel="meta" type="application/rdf+xml" title="FOAF" href="$site.url/foaf.xml" />');
    $meta = tmetawidget::i();
    $meta->lock();
    $meta->delete('foaf');
    $meta->delete('profile');
    $meta->unlock();
    ttheme::clearcache();
}
 public function getcontent()
 {
     $datadir = litepublisher::$paths->data . 'keywords' . DIRECTORY_SEPARATOR;
     $selfdir = dirname(__FILE__) . DIRECTORY_SEPARATOR;
     $tml = parse_ini_file($selfdir . 'keywords.templates.ini', false);
     $about = tplugins::getabout(tplugins::getname(__FILE__));
     $html = $this->html;
     $lang = $this->lang;
     $args = targs::i();
     if (isset($_GET['filename'])) {
         $filename = $_GET['filename'];
         if (!@file_exists($datadir . $filename)) {
             return $html->h3->notfound;
         }
         $args->filename = $filename;
         $args->content = file_get_contents($datadir . $filename);
         $args->formtitle = $about['edithead'];
         return $html->adminform('[editor=content]', $args);
     }
     $page = isset($_GET['page']) ? (int) $_GET['page'] : 1;
     $result = '';
     if ($page == 1) {
         $widget = tkeywordswidget::i();
         $widgets = twidgets::i();
         $idwidget = $widgets->find($widget);
         $args->count = $widget->count;
         $args->trace = $widget->trace;
         $args->notify = $widget->notify;
         $args->optionsform = 1;
         $args->title = $widget->gettitle($idwidget);
         $args->blackwords = tadminhtml::specchars(implode("\n", tkeywordsplugin::i()->blackwords));
         $lang = tplugins::getlangabout(__FILE__);
         $args->formtitle = $about['name'];
         $result .= $html->adminform('[text=title]
   [text=count]
   [checkbox=trace]
   [checkbox=notify]
   [editor=blackwords]
   [hidden=optionsform]', $args);
     }
     $from = 100 * ($page - 1);
     $filelist = tfiler::getfiles($datadir);
     sort($filelist);
     $count = ceil(count($filelist) / 100);
     $links = $this->getlinkpages($page, $count);
     $result .= $links;
     $filelist = array_slice($filelist, $from, 100, true);
     $list = '';
     $args->url = litepublisher::$site->url . '/admin/plugins/' . litepublisher::$site->q . 'plugin=' . basename(dirname(__FILE__));
     foreach ($filelist as $filename) {
         if (!preg_match('/^\\d+?\\.\\d+?\\.php$/', $filename)) {
             continue;
         }
         $args->filename = $filename;
         $args->content = file_get_contents($datadir . $filename);
         $list .= $html->parsearg($tml['item'], $args);
     }
     $args->list = $list;
     $result .= $html->parsearg($tml['form'], $args);
     $result .= $links;
     return $result;
 }
 public function getdeftitle()
 {
     $about = tplugins::getabout(tplugins::getname(__FILE__));
     return $about['name'];
 }
function tticketsUninstall($self)
{
    //die("Warning! You can lost all tickets!");
    litepublisher::$classes->lock();
    //if (litepublisher::$debug) litepublisher::$classes->delete('tpostclasses');
    tposts::unsub($self);
    litepublisher::$classes->delete('tticket');
    litepublisher::$classes->delete('tticketeditor');
    litepublisher::$classes->delete('tadmintickets');
    litepublisher::$classes->delete('tadminticketoptions');
    $adminmenus = tadminmenus::i();
    $adminmenus->lock();
    $adminmenus->deletetree($adminmenus->url2id('/admin/tickets/'));
    $adminmenus->unbind($self);
    $adminmenus->unlock();
    /*
    $menus = tmenus::i();
    $menus->lock();
    foreach (array('bug', 'feature', 'support', 'task') as $type) {
      $menus->deleteurl("/$type/");
    }
    $menus->deleteurl('/tickets/');
    $menus->unlock();
    
    litepublisher::$classes->delete('tticketsmenu');
    */
    litepublisher::$classes->unlock();
    $manager = tdbmanager::i();
    $manager->deletetable($self->childtable);
    $manager->delete_enum('posts', 'class', 'tticket');
    $optimizer = tdboptimizer::i();
    $optimizer->lock();
    $optimizer->unbind($self);
    if (false !== ($i = array_search('tickets', $optimizer->childtables))) {
        unset($optimizer->childtables[$i]);
    }
    $optimizer->unlock();
    tlocalmerger::i()->deleteplugin(tplugins::getname(__FILE__));
}
function tdownloaditemsUninstall($self)
{
    //die("Warning! You can lost all downloaditems!");
    tposts::unsub($self);
    $adminmenus = tadminmenus::i();
    $adminmenus->deletetree($adminmenus->url2id('/admin/downloaditems/'));
    $menus = tmenus::i();
    $menus->deletetree($menus->class2id('tdownloaditemsmenu'));
    $parser = tthemeparser::i();
    $parser->unbind($self);
    ttheme::clearcache();
    $classes = litepublisher::$classes;
    $classes->lock();
    $classes->delete('tdownloaditem');
    $classes->delete('tdownloaditemsmenu');
    $classes->delete('tdownloaditemeditor');
    $classes->delete('tadmindownloaditems');
    $classes->delete('tdownloaditemcounter');
    $classes->delete('taboutparser');
    $classes->unlock();
    $merger = tlocalmerger::i();
    $merger->deleteplugin(tplugins::getname(__FILE__));
    $manager = tdbmanager::i();
    $manager->deletetable($self->childtable);
    $manager->delete_enum('posts', 'class', 'tdownloaditem');
    $optimizer = tdboptimizer::i();
    $optimizer->lock();
    $optimizer->unbind($self);
    if (false !== ($i = array_search('downloaditems', $optimizer->childtables))) {
        unset($optimizer->childtables[$i]);
    }
    $optimizer->unlock();
    tjsmerger::i()->deletefile('default', '/plugins/downloaditem/downloaditem.min.js');
    litepublisher::$options->delete('downloaditem_themetag');
    litepublisher::$options->delete('downloaditem_plugintag');
    litepublisher::$options->savemodified();
}