session_start(); class NP_AuthSister extends NucleusPlugin { function getName() { return 'AuthSister'; } function getAuthor() { return 'hsur'; } function getURL() { return 'http://blog.cles.jp/np_cles/category/31/subcatid/23'; } function getVersion() { return '1.0.0'; } function getMinNucleusVersion() { return 330; } function getMinNucleusPatchLevel() { return 0; } function getEventList() { return array ('FormExtra', 'ValidateForm', 'InitSkinParse'); } function getDescription() { return _AuthSister_DESC; } function supportsFeature($what) { switch ($what) { case 'SqlTablePrefix': return 1; default: return 0; } } function hasAdminArea() { return 1; } function install() { $this->createOption('load', 'load', 'text', 'reiya'); } function init() { // include language file for this plugin $language = ereg_replace( '[\\|/]', '', getLanguageName()); if (file_exists($this->getDirectory().'language/'.$language.'.php')) @include_once($this->getDirectory().'language/'.$language.'.php'); global $authSister, $CONF; $authSister->load = $this->getOption('load'); $authSister->mes_a = _AuthSister_mes_a; $authSister->mes_b = _AuthSister_mes_b; $authSister->method = _AuthSister_method; $authSister->len_min = _AuthSister_len_min; $authSister->len_max = _AuthSister_len_max; $authSister->outlen = _AuthSister_outlen; $authSister->font = _AuthSister_font; $authSister->basedir = $this->getAdminURL().'../sharedlibs/auth_sister'; $authSister->imageurl = $CONF['ActionURL'] . '?action=plugin&name=AuthSister&type=img'; } function _info($msg) { if ($this->getOption('debug') == 'yes') { ACTIONLOG :: add(INFO, 'AuthSister: '.$msg); } } function _warn($msg) { ACTIONLOG :: add(WARNING, 'AuthSister: '.$msg); } function event_InitSkinParse(&$data){ } function doSkinVar($skinType, $type = '') { global $authSister; switch ($type) { case '': case 'header': $authSister->header(); break; default: return 'Unexisting type: ' . $type; } } function doAction($type){ global $CONF,$manager; global $authSister; $aActionsNotToCheck = array( '', 'img', ); if (!in_array($type, $aActionsNotToCheck)) { if (!$manager->checkTicket()) return _ERROR_BADTICKET; } switch ($type) { // When no action type is given, assume it's a ping case '': case 'img': $authSister->show_image('img','png'); exit; break; } } function event_FormExtra(&$data) { global $manager, $member; global $authSister; if ($member->isLoggedIn()) return; switch ($data['type']) { case 'commentform-notloggedin' : case 'membermailform-notloggedin': break; default : return; } $externalauth = array ( 'source' => $this->getName() ); $manager->notify('ExternalAuth', array ('externalauth' => &$externalauth)); if (isset($externalauth['result']) && $externalauth['result'] == true) return; switch ($data['type']) { case 'membermailform-notloggedin' : case 'commentform-notloggedin' : echo $authSister->load(); echo $authSister->insert(); break; } } function event_ValidateForm(&$data) { global $manager, $member; global $authSister; if ($member->isLoggedIn()) return; $externalauth = array ( 'source' => $this->getName() ); $manager->notify('ExternalAuth', array ('externalauth' => &$externalauth)); if (isset($externalauth['result']) && $externalauth['result'] == true) return; if ($authSister->auth()) { //echo $authSister->res(); session_destroy(); } else { $data['error'] = $authSister->res(); } } }