Система управления «Сайт PRO»
Версия 20240107

Класс Zakaz

Объект $Zakaz: Cms\Root\Zakaz наследует Cms\Site\Page

Объект «Заказ»

Исходный код
class Zakaz extends \Cms\Site\Page { … }

Методы

register()

$Zakaz->register($Main);
Исходный код
    function register($Main) {
        $Main->addTable("cart", array(
            "n", "parent", "type", "title",
            "login", "total", "discount", "date", "addr", "name", "phone", "email", "status",
            "deliver", "deliver_price", "deliver_status",
            "payment", "payment_price", "payment_status",
            "paid", "address", "comment",
        ));
        return array(
            "table" => "cart",
            "title" => "Заказ",
        );
    }

save()

$Zakaz->save();

Сохранение страницы

Смотрите описание Cms::Root::Main::Storage::save()

Исходный код
    function save() {
        $Auth = $this->Auth();
        $Data = $this->Data();
        $Main = $this->Main();
        if (!$this->n) {
            $this->n = 1 + (($n = $Data->dLookup("SELECT MAX(`n`) FROM `cart`")) ? $n : 1000);
            $this->id = "/order/{$this->n}";
            while (!$Data->query("INSERT INTO `cart` (`n`, `id`, `stamp`) VALUES ({$Data->quote($this->n)}, {$Data->quote($this->id)}, {$Data->quote(date('Y-m-d H:i:s'))})")) {
                if (++ $attempt > 9) return false;
                $this->n ++;
                $this->id = "/order/{$this->n}";
            }
        }
        if (!$this->id) $this->id = "/order/{$this->n}";
        if (!$this->parent) $this->parent = "/personal/order";
        if (!$this->title) $this->title = "Заказ {$this->n}";
        if (!$this->login) $this->login = $Auth->login ? $Auth->login : "/user/nobody";
        return parent::save();
    }

openItem()

$Zakaz->openItem();
Исходный код
    function openItem() {
        if ($this->_open_item) return;
        $Data = $this->Data();
        $this->cart = array();
        if (strlen($this->id)) {
            foreach ($Data->getRows("SELECT * FROM `cart_item` WHERE `parent`=" . $Data->quote($this->id) . " ORDER BY `order`") as $row) {
                $this->cart[$row['id']] = $row;
            }
        }
        $this->_open_item = true;
    }

saveItem()

$Zakaz->saveItem();
Исходный код
    function saveItem() {
        if (!$this->_open_item) return true;
        if (!strlen($this->id)) return;
        $Data = $this->Data();
        $Main = $this->Main();
        $Storage = $Main->Storage();
        if ($Table = $Storage->getTable('cart_item')) {
            $fields = array();
            foreach ($Table->getEnabledFieldList() as $Field) $fields[] = $Field->getName();
        } else {
            $fields = array( 'id', 'parent', 'type', 'title', 'order', 'price', 'qty' );
        }
        $sqlInsert = "`" . implode("`, `", $fields) . "`";
        $qid = $Data->quote($this->id);
        $Data->query("DELETE FROM `cart_item` WHERE `parent`=$qid");
        $order = 0;
        if (is_array($this->cart)) foreach ($this->cart as $id => $row) {
            $row['parent'] = $this->id;
            $row['order'] = ++ $order;
            $sqlValues = '';
            foreach ($fields as $name) $sqlValues .= (strlen($sqlValues) ? ', ' : '') . $Data->quote($row[$name]);
            if (!$Data->query("INSERT INTO `cart_item` ($sqlInsert) VAlUES ($sqlValues)")) return false;
        }
        return true;
    }

openAll()

$Zakaz->openAll();

Загрузка всех данных о странице

Возвращает: null

Исходный код
    function openAll() {
        $r = parent::openAll();
        $this->openItem();
        return $r;
    }

saveAll()

$Zakaz->saveAll($transaction=true);

Сохранение всех данных о странице

Возвращает: true|null

Исходный код
    function saveAll($transaction = true) {
        $Data = $this->Data();
        if ($transaction) if (!$Data->beginTransaction()) return false;
        if ($r = parent::saveAll(false)) {
            $this->saveItem();
            if ($transaction) $Data->commit();
        } else {
            if ($transaction) $Data->rollback();
        }
        return $r;
    }

getPanel()

$Zakaz->getPanel();

Список элементов в панели администрирования

Возвращает: array Панель

Исходный код
    function getPanel() {
        $r = parent::getPanel();
        if ($r['page']) $r['page']['title'] = "Редактировать заказ";
        return array(
            "page" => $r['page'],
            "delete" => $r['delete'],
        );
    }

getFull()

$Zakaz->getFull($full=null);

Получение полного текста для поисковой индексации

Параметры:

ИмяОписание
$full

Полный текст

Возвращает: string

Исходный код
    function getFull($full = null) {
        return;
    }

getHash()

$Zakaz->getHash();
Исходный код
    function getHash() {
        return substr(md5(str_rot13(sha1($this->n))), 0, 8);
    }