예제 #1
0
 public static function get_information(&$ircdata)
 {
     if (isset($ircdata[0]) && $ircdata[0] == 'CAPAB' && $ircdata[1] == 'MODULES') {
         if (strpos($ircdata[2], 'm_services_account.so') === false) {
             timer::add(array('core', 'check_services', array()), 1, 1);
         } else {
             core::$services_account = true;
         }
         // we have services_account
         if (strpos($ircdata[2], 'm_globops.so') !== false) {
             self::$globops = true;
         }
         // we have globops!
         if (strpos($ircdata[2], 'm_chghost.so') !== false) {
             self::$chghost = true;
         }
         // we have chghost
         if (strpos($ircdata[2], 'm_chgident.so') !== false) {
             self::$chgident = true;
         }
         // and chgident
     }
     // only trigger when our modules info is coming through
     if (isset($ircdata[0]) && $ircdata[0] == 'CAPAB' && $ircdata[1] == 'CAPABILITIES') {
         $data = explode('=', $ircdata[16]);
         $data = $data[1];
         $new_mdata = isset($mdata) ? explode('=', $mdata) : '';
         $rmodes = '';
         if (strpos($data, 'q') !== false) {
             self::$owner = true;
             self::$status_modes[] .= 'q';
             $rmodes .= 'q';
         }
         // check if +q is there
         if (strpos($data, 'a') !== false) {
             self::$protect = true;
             self::$status_modes[] .= 'a';
             $rmodes .= 'a';
         }
         // and +a
         $hdata = implode(' ', $ircdata);
         if (strpos($hdata, 'HALFOP=1') !== false) {
             self::$halfop = true;
             self::$status_modes[] .= 'h';
             $rmodes .= 'h';
         }
         // we check halfop differently
         self::$status_modes[] .= 'o';
         self::$status_modes[] .= 'v';
         $modes = str_replace(',', '', $data);
         self::$modes = $rmodes . $modes . 'ov';
     }
     // only trigger when the capab capabilities is coming through
     return true;
 }