/**
* 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 tregservicesInstall($self)
{
    $dir = litepublisher::$paths->data . 'regservices';
    @mkdir($dir, 0777);
    @chmod($dir, 0777);
    $name = basename(dirname(__FILE__));
    $about = tplugins::getabout($name);
    $self->lock();
    $css = tcssmerger::i();
    $css->addstyle("/plugins/{$name}/regservices.min.css");
    $self->dirname = $name;
    $self->widget_title = sprintf('<h4>%s</h4>', $about['widget_title']);
    litepublisher::$classes->add('tregservice', 'service.class.php', $name);
    litepublisher::$classes->add('tregserviceuser', 'service.class.php', $name);
    litepublisher::$classes->add('tgoogleregservice', 'google.service.php', $name);
    litepublisher::$classes->add('tfacebookregservice', 'facebook.service.php', $name);
    litepublisher::$classes->add('ttwitterregservice', 'twitter.service.php', $name);
    litepublisher::$classes->add('tmailruregservice', 'mailru.service.php', $name);
    litepublisher::$classes->add('tyandexregservice', 'yandex.service.php', $name);
    litepublisher::$classes->add('tvkontakteregservice', 'vkontakte.service.php', $name);
    litepublisher::$classes->add('todnoklassnikiservice', 'odnoklassniki.service.php', $name);
    litepublisher::$classes->add('toauth', 'oauth.class.php', $name);
    $self->add(tgoogleregservice::i());
    $self->add(tfacebookregservice::i());
    $self->add(ttwitterregservice::i());
    $self->add(tmailruregservice::i());
    $self->add(tyandexregservice::i());
    $self->add(tvkontakteregservice::i());
    $self->add(todnoklassnikiservice::i());
    $self->unlock();
    tusers::i()->deleted = tregserviceuser::i()->delete;
    if (dbversion) {
        $names = implode("', '", array_keys($self->items));
        tdbmanager::i()->createtable('regservices', "id int unsigned NOT NULL default 0,\n    service enum('{$names}') default 'google',\n    uid varchar(22) NOT NULL default '',\n    \n    key `id` (`id`),\n    KEY (`service`, `uid`)\n    ");
    }
    litepublisher::$urlmap->addget($self->url, get_class($self));
    tcommentform::i()->oncomuser = $self->oncomuser;
    litepublisher::$urlmap->clearcache();
}
 public function adduser(array $item, $rawdata)
 {
     $users = tusers::i();
     $reguser = tregserviceuser::i();
     if (!empty($item['email'])) {
         if ($id = $users->emailexists($item['email'])) {
             $user = $users->getitem($id);
             if ($user['status'] == 'comuser') {
                 $users->approve($id);
             }
         } elseif (litepublisher::$options->reguser) {
             $id = $users->add(array('email' => $item['email'], 'name' => $item['name'], 'website' => isset($item['website']) ? tcontentfilter::clean_website($item['website']) : ''));
             if (isset($item['uid'])) {
                 $uid = $item['uid'];
                 if (strlen($uid) >= 22) {
                     $uid = basemd5($uid);
                 }
                 $reguser->add($id, $this->name, $uid);
             }
         } else {
             //registration disabled
             return 403;
         }
     } else {
         $uid = !empty($item['uid']) ? $item['uid'] : (!empty($item['website']) ? $item['website'] : '');
         if ($uid) {
             if (strlen($uid) >= 22) {
                 $uid = basemd5($uid);
             }
             if ($id = $reguser->find($this->name, $uid)) {
                 //nothing
             } elseif (litepublisher::$options->reguser) {
                 $id = $users->add(array('email' => '', 'name' => $item['name'], 'website' => isset($item['website']) ? tcontentfilter::clean_website($item['website']) : ''));
                 $users->approve($id);
                 $reguser->add($id, $this->name, $uid);
             } else {
                 //registration disabled
                 return 403;
             }
         } else {
             //nothing found and hasnt email or uid
             return 403;
         }
     }
     $expired = time() + 31536000;
     $cookie = md5uniq();
     litepublisher::$options->user = $id;
     litepublisher::$options->updategroup();
     litepublisher::$options->setcookies($cookie, $expired);
     if (litepublisher::$options->ingroup('admin')) {
         setcookie('litepubl_user_flag', 'true', $expired, litepublisher::$site->subdir . '/', false);
     }
     setcookie('litepubl_regservice', $this->name, $expired, litepublisher::$site->subdir . '/', false);
     $this->onadd($id, $rawdata);
     if (isset($this->sessdata['comuser'])) {
         return tcommentform::i()->processform($this->sessdata['comuser'], true);
     }
     if (!empty($_COOKIE['backurl'])) {
         $backurl = $_COOKIE['backurl'];
     } else {
         $user = $users->getitem($id);
         $backurl = tusergroups::i()->gethome($user['idgroups'][0]);
     }
     return litepublisher::$urlmap->redir($backurl);
 }