Skocz do zawartości
  • 0
X3nO

Ładowanie biblioteki aplikacji w hooku

Pytanie

Witam, mam problem, chcę załadować sobie dodatkową bibliotekę:

        $panelClass = IPSLib::loadLibrary( IPSLib::getAppDir( 'panel' ) . '/extensions/panel.php', 'panel' );
        $panelClass = new $panelClass($registry);

Ale mam błąd:

Cytat

Catchable fatal error: Argument 1 passed to panel::__construct() must be an instance of ipsRegistry, null given

Dodam, że w module aplikacji kod działa

Kod hooka:

<?php

class playersOnline
{
	private $registry;	
	private $DB;
	private $memberData;	
	private $settings;	

	public function __construct()
	{
		$this->registry = ipsRegistry::instance();
		$this->DB = $this->registry->DB();
		$this->memberData =& $this->registry->member()->fetchMemberData();
		$this->settings =& $this->registry->fetchSettings();
	}

	public function getOutput()
	{
        $panelClass = IPSLib::loadLibrary( IPSLib::getAppDir( 'panel' ) . '/extensions/panel.php', 'panel' );
        $panelClass = new $panelClass($registry);
        $panelClass->ConnectMySQL();

        require_once(IPSLib::getAppDir( 'panel' ) . '/extensions/SampQueryAPI.php');
        $query = new SampQueryAPI($this->settings['panel_addres_ip'], $this->settings['panel_addres_port']);

        if ($query->isOnline()) {
            $aInformation = $query->getInfo();
            $aPlayers = $query->getDetailedPlayers();
            if ($aInformation['players'] != 0) {
                $counts = 0;
                $Players = array();
                foreach ($aPlayers as $sValue){
                    $gracze[ 'ponline' ][$counts ] = $sValue;
                    $counts++;
                }
                $countsx = 0;
                foreach ($gracze['ponline'] as $entry) {
                    $danekonta = $this->registry->DB('samp_db')->buildAndFetch( array(
                        'select' => 'Nick, id, Admin, UNIX_TIMESTAMP(`Vip`) AS czas_unix, Score, ModPlayer',
                        'from'   => 'Players',
                        'where'  => 'Nick=\''.$entry['nickname'].'\''
                    ));
                    $this->registry->DB('samp_db')->execute();
                    $Players[$countsx]['samp_ID'] = $entry['playerid'];
                    $Players[$countsx]['samp_Name'] .= $this->nameRank($danekonta['id'], $entry['nickname'], $danekonta['Admin'], $danekonta['ModPlayer'], $danekonta['czas_unix'], '1');
                    if ($this->checkAccount($danekonta['id'])) {
                        $Players[$countsx]['samp_Respect'] = $danekonta['Score'];
                    } else {
                        $Players[$countsx]['samp_Respect'] = '-';
                    }

                    $countsx++;
                }

                return $this->registry->getClass( 'output' )->getTemplate( 'panel' )->hookPlayersOnline( $countsx, $Players );
            } else {
                return "<center><br/><br/><b>Brak graczy na serwerze! :(</b></center><br/><br/><br/><br/><br/>";
            }
        } else {
            return "<center><br/><br/><b>Serwer nie odpowiada! :(</b></center><br/><br/><br/><br/><br/>";
        }
	}
}

?>

kod biblioteki:

<?php
class panel {
	protected $registry;
	protected $DB;
	protected $member;
	protected $memberData;
	protected $request;
	protected $settings;
	
	public function __construct( ipsRegistry $registry)
	{
		$this->registry = $registry;
		$this->DB = $this->registry->DB();
		$this->member = $this->registry->member();
		$this->memberData = $this->registry->member()->fetchMemberData();
		$this->request = $this->registry->fetchRequest();
		$this->settings = $this->registry->fetchSettings();
	}

    public function ConnectMySQL()
    {
        $password = base64_decode($this->settings['panel_sql_pass']);

        $this->registry->dbFunctions()->setDB('mysql', 'samp_db',array(
        	'sql_database' => $this->settings['panel_sql_database'],
        	'sql_user' => $this->settings['panel_sql_user'],
        	'sql_pass' => $password,
        	'sql_host' => $this->settings['panel_sql_host'],
        	'sql_tbl_prefix' => $this->settings['panel_sql_tbl_prefix']
        ));
    }

    public function getgroupname($group_id)
    {
        $group = $this->caches['group_cache'][ $group_id ];
        return $group['g_title'];
    }


    public function nameRank($id_konta, $nick, $dane_konta_admin, $mod_player, $czas_unix, $group) {
        if ($id_konta != 0) {
            if ($dane_konta_admin == 4) {
                if ($group == 0) $nick = $this->getgroupname($this->settings['panel_rank_admin4']);
                $return = IPSMember::makeNameFormatted( $nick, $this->settings['panel_rank_admin4'] );
            } else if ($dane_konta_admin == 3)  {
                if ($group == 0) $nick = $this->getgroupname($this->settings['panel_rank_admin3']);
                $return = IPSMember::makeNameFormatted( $nick, $this->settings['panel_rank_admin3'] );
            } else if ($dane_konta_admin == 2) {
                if ($group == 0) $nick = $this->getgroupname($this->settings['panel_rank_admin2']);
                $return = IPSMember::makeNameFormatted( $nick, $this->settings['panel_rank_admin2'] );
            } else if ($dane_konta_admin == 1) {
                if ($group == 0) $nick = $this->getgroupname($this->settings['panel_rank_admin1']);
                $return = IPSMember::makeNameFormatted( $nick, $this->settings['panel_rank_admin1'] );
            } else if ($mod_player == 1) {
                if ($group == 0) $nick = $this->getgroupname($this->settings['panel_rank_modplayer']);
                $return = IPSMember::makeNameFormatted( $nick, $this->settings['panel_rank_modplayer'] );
            } else if ($czas_unix > time()) {
                if ($group == 0) $nick = $this->getgroupname($this->settings['panel_rank_vip']);
                $return = IPSMember::makeNameFormatted( $nick, $this->settings['panel_rank_vip'] );
            } else {
                if ($group == 0) $nick = $this->getgroupname($this->settings['panel_rank_player']);
                $return = IPSMember::makeNameFormatted( $nick, $this->settings['panel_rank_player'] );
            }
            if ($group == 1) {
                $return = '<a href="index.php?app=panel&module=ajax&section=showStats&char='.$id_konta.'" onclick="ipb.game.showCharacterDetails(this, '.$id_konta.');return false;">'.$return.'</a>';
            }
        } else {
            if ($group == 0) $nick = $this->getgroupname($this->settings['panel_rank_guest']);
            $return = IPSMember::makeNameFormatted( $nick, $this->settings['panel_rank_guest'] );
        }

        return $return;
    }

    public function checkAccount($id)
    {
        if ($id != 0) {
            return true;
        } else {
            return false;
        }
    }
}

 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

4 odpowiedzi na to pytanie

Polecane posty

  • 1

No i prawidłowo że masz błąd. nie masz zmiennej $registry, tylko $this->registry

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0
45 minut temu, Spanner napisał:

No i prawidłowo że masz błąd. nie masz zmiennej $registry, tylko $this->registry

Dzięki, działa. :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0
46 minut temu, X3nO napisał:

Dzięki, działa. :)

Jasne, że działa. tyle dodatków co napisałem to musi działać :P

  • Like 1

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość
Temat jest zablokowany i nie można w nim pisać.

  • Kto przegląda   0 użytkowników

    Brak zalogowanych użytkowników przeglądających tę stronę.

×

Ważne informacje

Kontynuując przeglądanie strony, wyrażasz zgodę na używanie przez nas plików cookies.