Subversion-Projekte lars-tiefland.ci

Revision

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

<?php

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

/**
 * Medien_model
 * 
 * Liest die Bilder von Artikeln oder Kategorien aus
 * 
 * @package WebanOS CI
 * @author Lars Tiefland
 * @copyright 2016
 * @version $Id: Medien_model.php 2234 2017-12-23 22:54:44Z lars $
 * @access public
 */
class Medien_model extends CI_Model
{
        private $sql;
        private $formate;
        private $basis;
        /**
         * Medien_model::__construct()
         *
         * stellt alle nötigen SQL-Abfragen und Formate für die Medien bereit
         *  
         * @return
         */
        public function __construct()
        {
                parent::__construct();
                $this->basis = $this->config->item('base_url');
                $this->formate = array(
                        "" => "",
                        "_klein" => "kl/",
                        "_mini" => "mini/",
                        "_gr" => "gr/",
                        "_br" => "br/",
                        "_ba" => "ba/",
                        "_nav" => "nav/",
                        "_sl" => "sl/",
                        "_start" => "start/",
                        "_icon" => "icon/",
                        );

                $this->sql["medien"]["artikel"] = "SELECT
                                m.id,
                                m.name,
                                m.folder,
                                m.beschreibung,
                                m.typ,
                                am.rang,
                                am.aehnlich,
                                mt.name AS typ_name
                        FROM
                                medien m
                        JOIN
                                artikel_medien am
                        JOIN
                                content_management.medien_typ mt
                        ON
                                mt.id=m.typ
                        WHERE
                                am.medien_id=m.id
                        AND
                                artikel_id=?
                        AND
                                typ=?
                        ORDER BY
                                rang
                ";
                $this->sql["medien"]["category"] = "SELECT
                                m.id,
                                m.name,
                                m.folder,
                                m.beschreibung,
                                m.typ,
                                dm.rang,
                                dm.aehnlich,
                                mt.name AS typ_name
                        FROM
                                medien m
                        JOIN
                                directory_medien dm
                        JOIN
                                content_management.medien_typ mt
                        ON
                                mt.id=m.typ
                        WHERE
                                dm.medien_id=m.id
                        AND
                                directory_id=?
                        AND
                                typ=?
                        ORDER BY
                                rang
                ";
                $this->sql["medien"]["artikel_all"] = "SELECT
                                m.id,
                                m.name,
                                m.folder,
                                m.beschreibung,
                                m.typ,
                                am.rang,
                                am.aehnlich,
                                mt.name AS typ_name
                        FROM
                                medien m
                        JOIN
                                artikel_medien am
                        JOIN
                                content_management.medien_typ mt
                        ON
                                mt.id=m.typ
                        WHERE
                                am.medien_id=m.id
                        AND
                                artikel_id=?
                        ORDER BY
                                rang
                ";
                $this->sql["medien"]["category_all"] = "SELECT
                                m.id,
                                m.name,
                                m.folder,
                                m.beschreibung,
                                m.typ,
                                dm.rang,
                                dm.aehnlich,
                                mt.name AS typ_name
                        FROM
                                medien m
                        JOIN
                                directory_medien dm
                        JOIN
                                content_management.medien_typ mt
                        ON
                                mt.id=m.typ
                        WHERE
                                dm.medien_id=m.id
                        AND
                                directory_id=?
                        ORDER BY
                                rang
                ";
                $aehnlich = array(
                        "nein",
                        "ja",
                        );
                $this->smarty->assign("aehnlich", $aehnlich);
                $this->sql["medien"]["list"] = "SELECT
                *
            FROM
                medien
            WHERE
                folder=?
            AND
                typ!=3
        ";

                $this->sql["medien"]["artikel_add"] = "INSERT INTO
                artikel_medien
            SET
                medien_id=?,
                artikel_id=?,
                rang=?,
                aehnlich=0
        ";
                $this->sql["medien"]["directory_add"] = "INSERT INTO
                directory_medien
            SET
                medien_id=?,
                directory_id=?,
                rang=?,
                aehnlich=0
        ";
        }

        /**
         * Medien_model::get_artikel_medien()
         * 
         * Liest alle Medien für einen Artikel aus und erzeugt alle konfigurierten URLs (relativ und absolut)
         * 
         * @param mixed $artikel_id
         * @param integer $typ
         * @return
         */
        public function get_artikel_medien($artikel_id, $typ = null)
        {
                $medien = array();
                if (is_null($typ)) {
                        $am_res = $this->db->query($this->sql["medien"]["artikel_all"], array($artikel_id, ));
                } else {
                        $am_res = $this->db->query($this->sql["medien"]["artikel"], array(
                                $artikel_id,
                                $typ,
                                ));
                }
                $basis = $GLOBALS["webs"]["verzeichnis"] . "/images/upload/";
                if ($am_res->num_rows()) {
                        while ($row = $am_res->unbuffered_row('array')) {
                                $url = '/images/upload/';
                                $folder = '';
                                if ($row['folder']) {
                                        $folder = $row['folder'];
                                        $ende = substr($folder, -1);
                                        if ($ende != '/') {
                                                $folder .= '/';
                                        }
                                }
                                $url .= $folder;
                                $b_name = $row['name'];
                                foreach ($this->formate as $format => $dir) {
                                        $row['bild_url' . $format] = $url . $dir . $b_name;
                                        $row["abs_bild_url" . $format] = $this->basis . $row["bild_url" . $format];
                                }
                                $row["path"] = $basis . $row["folder"] . "/" . $row["name"];
                                $row["size"] = filesize($row["path"]);
                                $row["img_size"] = GetImageSize($row["path"]);
                                $medien[] = $row;
                        }
                } else {
                        $url = "/images/webelemente/";
                        $b_name = basename($GLOBALS["INI"]["itemKorrektur"]["noImage"]);
                        $row["name"] = $b_name;
                        $row["beschreibung"] = "";
                        $row["folder"] = "";
                        $row["typ"] = 1;
                        $rot["typ_name"] = "Bild";
                        $row["path"] = $basis . $row["folder"] . "/" . $row["name"];
                        $row["size"] = filesize($row["path"]);
                        $row["img_size"] = GetImageSize($row["path"]);
                        foreach ($this->formate as $format => $dir) {
                                $row["bild_url" . $format] = $url . $b_name;
                                $row["abs_bild_url" . $format] = $this->basis . $row["bild_url" . $format];
                        }
                        $medien[] = $row;
                }
                return $medien;
        }

        /**
         * Medien_model::get_category_medien()
         * 
         * Liest alle Medien für eine Kategorie aus und erzeugt alle konfigurierten URLs (relativ und absolut)
         * 
         * @param mixed $category_id
         * @param integer $typ
         * @return
         */
        public function get_category_medien($category_id, $typ = null)
        {
                $basis = $GLOBALS["webs"]["verzeichnis"] . "/images/upload/";
                $medien = array();
                if (is_null($typ)) {
                        $am_res = $this->db->query($this->sql["medien"]["category_all"], array($category_id, ));
                } else {
                        $am_res = $this->db->query($this->sql["medien"]["category"], array(
                                $category_id,
                                $typ,
                                ));
                }
                if ($am_res->num_rows()) {
                        while ($row = $am_res->unbuffered_row('array')) {
                                $url = '/images/upload/';
                                $folder = '';
                                if ($row['folder']) {
                                        $folder = $row['folder'];
                                        $ende = substr($folder, -1);
                                        if ($ende != '/') {
                                                $folder .= '/';
                                        }
                                }
                                $url .= $folder;
                                $b_name = $row['name'];
                                foreach ($this->formate as $format => $dir) {
                                        $row['bild_url' . $format] = $url . $dir . $b_name;
                                        $row["abs_bild_url" . $format] = $this->basis . $row["bild_url" . $format];
                                }
                                $row["path"] = $basis . $row["folder"] . "/" . $row["name"];
                                $row["size"] = filesize($row["path"]);
                                $row["img_size"] = GetImageSize($row["path"]);
                                $medien[] = $row;
                        }
                } else {
                        $url = "/images/webelemente/";
                        $b_name = basename($GLOBALS["INI"]["itemKorrektur"]["noImage"]);
                        $row["name"] = $b_name;
                        $row["beschreibung"] = "";
                        $row["folder"] = "";
                        $row["typ"] = 1;
                        $rot["typ_name"] = "Bild";
                        $row["path"] = $basis . $row["folder"] . "/" . $row["name"];
                        $row["size"] = filesize($row["path"]);
                        $row["img_size"] = GetImageSize($row["path"]);
                        foreach ($this->formate as $format => $dir) {
                                $row["bild_url" . $format] = $url . $b_name;
                                $row["abs_bild_url" . $format] = $this->basis . $row["bild_url" . $format];
                        }
                        $medien[] = $row;
                }
                return $medien;
        }

        public function get()
        {
                $basis = $GLOBALS["webs"]["verzeichnis"] . "/images/upload/";
                $folder = $this->input->get('folder');
                if (!$folder) {
                        $folder = "";
                }
                $res = $this->db->query($this->sql["medien"]["list"], array($folder));
                while ($row = $res->unbuffered_row("array")) {
                        $url = '/images/upload/';
                        $folder = '';
                        if ($row['folder']) {
                                $folder = $row['folder'];
                                $ende = substr($folder, -1);
                                if ($ende != '/') {
                                        $folder .= '/';
                                }
                        }
                        $url .= $folder;
                        $b_name = $row['name'];
                        foreach ($this->formate as $format => $dir) {
                                $row['bild_url' . $format] = $url . $dir . $b_name;
                                $row["abs_bild_url" . $format] = $this->basis . $row["bild_url" . $format];
                        }
                        $row["path"] = $basis . $row["folder"] . "/" . $row["name"];
                        $row["size"] = filesize($row["path"]);
                        $row["img_size"] = GetImageSize($row["path"]);
                        $medien[] = $row;
                }
                return $medien;
        }

        public function add()
        {
                $l_type = $this->input->get("l_type");
                $l_id = $this->input->get("l_id");
                switch ($l_type) {
                        case "a":
                                $sql = "SELECT
                        MAX(rang) AS rang
                    FROM
                        artikel_medien
                    WHERE
                        artikel_id=" . $l_id . "
                ";
                                $addSql = $this->sql["medien"]["artikel_add"];
                                break;
                        case "d":
                                $sql = "SELECT
                        MAX(rang) AS rang
                    FROM
                        directory_medien
                    WHERE
                        directory_id=" . $l_id . "
                ";
                                $addSql = $this->sql["medien"]["directory_add"];
                                break;
                }
                $res = $this->db->query($sql);
                $row = $res->unbuffered_row("array");
                $rang = $row["rang"] + 10;
                $b_id = $this->input->get("b_id");
                $this->db->query($addSql, array(
                        $b_id,
                        $l_id,
                        $rang,
                        ));
        }
}

?>