Класс Zakaz
Объект $Zakaz:
Объект «Заказ»
Исходный код
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);
}