• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

databaselist.php on line 68 how to solve?

tiagolokai

New Member
Joined
Sep 27, 2014
Messages
2
Reaction score
1
my databaselist.php:
PHP:
<?php
if(!defined('INITIALIZED'))
    exit;

class DatabaseList extends DatabaseHandler implements Iterator, Countable
{
    public $data;
    public $iterator = 0;
    public $class;
    public $table;
    public $tables = array();
    public $fields = array();
    public $extraFields = array();
    public $filter;
    public $orders = array();
    public $limit;
    public $offset = 0;

    public function __construct($class = null)
    {
        if($class !== null)
            $this->setClass($class);
    }

    public function load()
    {
        $fieldsArray = array();

        if(count($this->fields) > 0)
            foreach($this->fields as $fieldName)
                    $fieldsArray[$fieldName] = $this->getDatabaseHandler()->tableName($this->table) . '.' . $this->getDatabaseHandler()->fieldName($fieldName);

        if(count($this->extraFields) > 0)
            foreach($this->extraFields as $field)
                if(!$field->hasAlias())
                    $fieldsArray[] = $this->getDatabaseHandler()->tableName($field->getTable()) . '.' . $this->getDatabaseHandler()->fieldName($field->getName());
                else
                    $fieldsArray[] = $this->getDatabaseHandler()->tableName($field->getTable()) . '.' . $this->getDatabaseHandler()->fieldName($field->getName()) . ' AS ' . $this->getDatabaseHandler()->fieldName($field->getAlias());

        $tables = array();
        foreach($this->tables as $table)
            $tables[] = $this->getDatabaseHandler()->tableName($table);

        $filter = '';
        if($this->filter !== null)
            $filter = ' WHERE ' .$this->filter->__toString();

        $order = '';
        $orders = array();
        if(count($this->orders) > 0)
        {
            foreach($this->orders as $_tmp_order)
                $orders[] = $_tmp_order->__toString();
            if(count($orders) > 0)
                $order = ' ORDER BY ' . implode(', ', $orders);
        }

        $limit = '';
        if($this->limit !== null)
            $limit = ' LIMIT ' . (int) $this->limit;

        $offset = '';
        if($this->offset > 0)
            $offset = ' OFFSET ' . (int) $this->offset;

        $query = 'SELECT ' . implode(', ', $fieldsArray) . ' FROM ' . implode(', ', $tables) . $filter . $order . $limit . $offset;

        $this->data = $this->getDatabaseHandler()->query($query)->fetchAll();
    }

    public function getResult($id)
    {
        if(!isset($this->data))
            $this->load();
        if(isset($this->data[$id]))
        {
            if(!is_object($this->data[$id]))
            {
                $_tmp = new $this->class();
                $_tmp->loadData($this->data[$id]);
                return $_tmp;
            }
            else
                return $this->data[$id];
        }
        else
            return false;
    }

    public function addExtraField($field)
    {
        $this->extraFields[] = $field;
        $this->addTables($field->getTable());
    }

    public function addOrder($order)
    {
        $this->orders[] = $order;
    }

    public function setClass($class)
    {
        $this->class = $class;
        $instance = new $this->class();
        $this->fields = $instance::$fields;
        if(isset($instance::$extraFields))
            foreach($instance::$extraFields as $extraField)
            {
                if(!isset($extraField[2]))
                    $this->extraFields[] = new SQL_Field($extraField[0], $extraField[1]);
                else
                    $this->extraFields[] = new SQL_Field($extraField[0], $extraField[1], $extraField[2]);
                $this->tables[$extraField[1]] = $extraField[1];
            }
        $this->table = $instance::$table;
        $this->tables[$instance::$table] = $instance::$table;
    }

    public function setFilter($filter)
    {
        $this->addTables($filter->getTables());
        $this->filter = $filter;
    }

    public function setLimit($limit)
    {
        $this->limit = $limit;
    }

    public function setOffset($offset)
    {
        $this->offset = $offset;
    }

    public function addTables($tables)
    {
        if(is_array($tables))
        {
            foreach($tables as $table)
                if($table != '' && !in_array($table, $this->tables))
                    $this->tables[$table] = $table;
        }
        elseif($tables != '' && !in_array($tables, $this->tables))
            $this->tables[$tables] = $tables;
    }

    public function current()
    {
        return $this->getResult($this->iterator);
    }

    public function rewind()
    {
        if(!isset($this->data))
            $this->load();
        $this->iterator = 0;
    }

    public function next()
    {
        ++$this->iterator;
    }

    public function key()
    {
        return $this->iterator;
    }

    public function valid()
    {
        return isset($this->data[$this->iterator]);
    }

    public function count()
    {
        if(!isset($this->data))
            $this->load();
        return count($this->data);
    }
}
 
Last edited by a moderator:
Back
Top