Subversion-Projekte lars-tiefland.ci

Revision

Revision 1997 | Zur aktuellen Revision | Blame | Vergleich mit vorheriger | Letzte Änderung | Log anzeigen | RSS feed

<?php

/**
 * @author Lars Tiefland
 * @copyright 2016
 */

/**
 * Artikel_model
 * 
 * Liest alle Daten für Artikel
 * 
 * @package WebanOS CI
 * @author Lars Tiefland
 * @copyright 2016
 * @version $Id: Artikel_model.php 2008 2017-02-02 19:03:01Z lars $
 * @access public
 */
class Artikel_model extends CI_Model
{
        /**
         * Artikel_model::__construct()
         * 
         * @return
         */
        public function __construct()
        {
                parent::__construct();
                $this->load->model('alias_model', 'alias');
                $this->load->model('preise_model', 'preise');
                $this->load->model('medien_model', 'medien');
                $this->load->model('shop_position_model', 'shop_position');

        }
        /**
         * Artikel_model::list_artikel()
         * 
         * Artikelübersicht
         * 
         * @param mixed $father
         * @param bool $return_zero_price
         * @return
         */
        public function list_artikel($father, $return_zero_price = false, $start = 0, $limit = null)
        {
                $artikel = array();
                /*$this->db->select('ID');
                //$this->db->order_by('Lieferstatus', 'ASC');
                //$this->db->order_by('Rang', 'DESC');
                if (!is_null($limit))
                {
                $this->db->limit($limit, $start);
                }
                $query = $this->db->get_where('artikel', array(
                "father" => $father,
                "language" => "DE",
                "status" => 0,
                ));*/
                $sql = 'SELECT
                                SQL_CALC_FOUND_ROWS
                                ID
                        FROM
                                artikel
                        WHERE
                                father = '.$father.'
                        AND
                                language = "DE"
                        AND
                                status = 0      
                ';
                if (!is_null($limit))
                {
                        $sql .= '
                                LIMIT
                                        '.$start.','.$limit.'
                        ';
                }
                $query = $this->db->query($sql);
                $sql = "SELECT FOUND_ROWS() AS total";
                $ret = $this->db->query($sql);
                $erg = $ret->row_array();
                $count = $erg['total'];
                while ($row = $query->unbuffered_row('array'))
                {
                        $item = $this->get_item_info($row["ID"], $return_zero_price);
                        if (is_array($item))
                        {
                                $artikel[] = $item;
                        }
                }
                $ret = array(
                        'artikel' => $artikel,
                        'count' => $count,
                        );
                return $ret;
        }
        /**
         * Artikel_model::get_artikel()
         * 
         * einzelner Artikel
         * 
         * @param mixed $id
         * @param bool $return
         * @return
         */
        public function get_artikel($id, $return = false, $versand = false)
        {
                if (is_numeric($id))
                {
                        if ($return === false)
                        {
                                $link = $this->get_link($id, 1);
                                header("Location: ".$link);
                        }
                        else
                        {
                                $row = $this->get_item_info($id, true, $versand);
                                return $row;
                        }
                }
                else
                {
                        $query = $this->db->get_where('alias', array(
                                "alias" => $id.'.html',
                                "type_id" => 1,
                                ));
                        $row = $query->row_array();
                        $id = $row["id"];
                        $row = $this->get_item_info($id);
                        return $row;
                }
        }

        /**
         * Artikel_model::get_link()
         * 
         * erzeuge Link für Artikel
         * 
         * @param mixed $id
         * @return
         */
        private function get_link($id)
        {
                $link = $this->alias->get_link($id, 1);
                return "/".$link;
        }

        /**
         * Artikel_model::get_item_info()
         * 
         * alle Infos für Artikel inkl. Prüfung auf Sperrkriterien
         * 
         * @param mixed $id
         * @param bool $return_zero_price
         * @return
         */
        private function get_item_info($id, $return_zero_price = false, $versand=false)
        {
                $query = $this->db->get_where('artikel', array(
                        'id' => $id,
                        "language" => "DE",
                        ));
                $row = $query->row_array();
                $row['itemLink'] = $this->get_link($row["ID"]);
                $preise = $this->preise->get_prices($row["ID"]);
                if (count($preise) && $versand===false)
                {
                        if ((float)$preise["preis1"] > 0 || $return_zero_price === true)
                        {
                                $row['grundpreis'] = "";
                                if (isset($row['gebinde_menge']) && $row["gebinde_menge"] > 0 && isset($row['gebinde_einheit']) &&
                                        $row["gebinde_einheit"])
                                {
                                        $row["grundpreis"] = $row["preis1"] / $row["gebinde_menge"];
                                }
                                $path = getPath($row['Father']);
                                if (is_array($path))
                                {
                                        $row['path'] = $path;
                                        $row = array_merge($row, $preise);
                                        $row["shopPosition"] = $this->shop_position->get_position($row['Father']);
                                        $row["shopPosition"][] = array(
                                                'Name' => $row['kurzbezeichnung'],
                                                'link' => $row['itemLink'],
                                                );
                                        $medien = $this->medien->get_artikel_medien($row["ID"]);
                                        $row["medien"] = $medien;
                                        $row["preis"] = $row["preis1"];
                                        return $row;
                                }
                        }
                }
                elseif($versand===true)
                {
                        return $row;
                }
        }

        /**
         * Artikel_model::serie()
         * 
         * @param mixed $serien_id
         * @return
         */
        public function serie($serien_id)
        {
                $items = array();
                // ME: erstmal gucken, ob es eine Serie zu einem Ordner ist
                $sql = "SELECT DISTINCT
                    a.ID as aID
                FROM
                    shop_link_table slt,
                    directory d
                JOIN
                    artikel a
                ON
                    a.Father = d.id
                WHERE
                    slt.Father = ".$serien_id."
                AND
                    d.id = slt.id
                AND
                    verwendung = 'd2s'";

                $q = $this->db->query($sql);
                if ($q)
                {
                        while ($r = $q->unbuffered_row('array'))
                        {
                                // alle Artikel zum Ordner holen
                                $item = $this->get_item_info($r['aID'], true);
                                if (is_array($item))
                                {
                                        $items[] = $item;
                                }

                        }
                }
                $sql = "SELECT DISTINCT
                                id
                        FROM
                                shop_link_table
                        WHERE
                                Father = ".$serien_id."
                        AND
                                verwendung = 'a2s'";
                $q = $this->db->query($sql);
                if ($q)
                {
                        while ($r = $q->unbuffered_row('array'))
                        {
                                $item = $this->get_item_info($r['id'], true);
                                if (is_array($item) && !in_array($item, $items))
                                {
                                        $items[] = $item;
                                }
                        }
                }

                return $items;
        }
}

?>