Разработка web-сайта о кафе, барах и ресторанах города Челябинска
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
астает до масштабов всего мира.
Литература
1.Зандстра М. PHP. Объекты, шаблоны и методики программирования. - Вильямс: 2010, 560 c.
2.Котеров Д. PHP 5. - BHV-СПб: 2008, 1104 с.
3.Мейер Э. CSS - каскадные таблицы стилей. Подробное руководство, 3-е издание. - Символ-Плюс: 2008, 576 с.
4.Флэнаган Д. JavaScript. Подробное руководство, 5-е издание. - Символ-Плюс: 2009, 992 с.
.Грабер М. SQL. - Лори: 2007, 644 с.
.Дюбуа П. MySQL. Сборник рецептов. - Символ-Плюс: 2004, 1056 с.
.Заводны Д., Шварц Б., Зайцев П., Ткаченко В., Ленц А. MySQL. Оптимизация производительности, 2-е издание. - Символ-Плюс: 2010, 816 с.
Приложение A
FirmDescriptor extends CMSK_Descriptor
{$className = Firm;$common_fields = array(
slug=>array(name=>Url,type=>text,slug=>name_ru,rules=>trim|required,display_in_index=>text,),
address=>array(name=>Адрес,type=>text,rules=>trim|required,),
point=>array(name=>Координаты,type=>point),
avg_price=>array(name=>Средняя цена на человека,type=>text,rules=>trim,),
raion_id=>array(name=>Район,type=>select,model=>Raion,value_field=>id,name_field=>name,),
showed=>array(name=>Показывать,type=>checkbox,default_value=>true,display_in_index=>showed_toogler,),
tags=>array(name=>Категории,type=>multiselect,model=>Tag,value_field=>id,name_field=>name,table=>firms_tags,inner_field=>firm_id,outer_field=>tag_id),
);$multi_language_fields = array(
name=>array(name=>Название,type=>text,rules=>trim|required,display_in_index=>text,),
short=>array(name=>Кратко,type=>textarea,rules=>trim,),
full=>array(name=>Подробно,type=>textarea,rules=>trim,),
count_zal=>array(name=>Количество залов,type=>text,rules=>trim,),
order_table=>array(name=>Заказ столика,type=>text,rules=>trim,),
advanced_services=>array(name=>Дополнительные услуги,type=>text,rules=>trim,),
count_places=>array(name=>Общее количество мест,type=>text,rules=>trim,),
parking=>array(name=>Парковка,type=>text,rules=>trim,),
phones=>array(name=>Телефоны,type=>text,rules=>trim,),
timetable=>array(name=>Время работы,type=>text,rules=>trim,),
title=>array(name=>Title,type=>text,),
keywords=>array(name=>Keywords,type=>text,),
description=>array(name=>Description,type=>text,),
);$orderby = t1.orderby,t1.id;$multi_lang_field = firm_id;
}
Приложение Б
<?php if (!defined(BASEPATH)) exit(No direct script access allowed);Firm extends CMSK_Model {$count_per_page = 10;$count_per_page_favorites = 6;$count_per_page_last = 12;
/**
* Информация о фирме
*
* @param object $firm фирма
*
* @return array
*/getFieldsByFirm($firm, $tags)
{
$firm_fields = array();($this->descriptor->common_fields as $name=>$field) {(isset($field[for_out]) && $field[for_out] && $firm->{$name}) {
$firm_fields[] = array(
name => $field[name],
value => $firm->{$name},
);
}
}($this->descriptor->multi_language_fields as $name=>$field) {(isset($field[for_out]) && $field[for_out] && $firm->{$name}) {
$firm_fields[] = array(
name => $field[name],
value => $firm->{$name},
);
}
}($tags as $tag) {($tag->for_out) {
$firm_fields[] = array(
name => $tag->name,
is_have => true,
);
}
}
return $firm_fields;
}
/**
* Информация для статистики
*
* @return integer
*/getStats()
{
$q = $this->db->select()->from($this->descriptor->getTable(), array());
escape(false)->column(count(distinctt1.id)asc)->escape(true);">$q->escape(false)->column(count(distinct t1.id) as c)->escape(true);
where(t1.showed,true);">$q->where(t1.showed, true);
$items = $q->get()->result();(count($items)>0) {$items[0]->c;
} else {0;
}
}
/**
* Статьи по списку адресов
*
* @param array $urls список адресов
*
* @return array
*/getByUrls($urls)
{
$items = array();($urls as $url)
{
$items[] = $this->getByField(url,$url);
}
return $items;
}
/**
* выборка записи по полю и значению
*
* @param integer $field поля таблице для выборки
* @param string $value значение для выборки
* @param boolean $separate_lang признак будут ли разделены языки? иначе будет выбран текущий
*
* @return object
*/function getOneByField($field, $value=true)
{
$q = $this->db->select()->from($this->descriptor->getTable(), array());
join($this->descriptor->getTable()._content,t1.id=t2..$this->descriptor->multi_lang_field,array());">$q->join($this->descriptor->getTable()._content, t1.id=t2..$this->descriptor->multi_lang_field, array());
join(langs,"t2.lang_id=t3.id",array());">$q->join(langs, "t2.lang_id=t3.id", array());
where(t3.short,$this->Lang->default_lang);">$q->where(t3.short, $this->Lang->default_lang);
whereIsNotNull(t3.short);">$q->whereIsNotNull(t3.short);
$q->escape(false)->column(t3.*, t2.*)->escape(true);
$q->escape(false)->column(x(point) as point_x, y(point) as point_y, t1.*)->escape(true);
escape(false)->column(round(avg(t4.rate))asrate,count(distinctt4.id)ascount_rate)->escape(true);">$q->escape(false)->column(round(avg(t4.rate)) as rate,count(distinct t4.id) as count_rate)->escape(true);
join(firms_rates,"t1.id=t4.firm_id",array());">$q->join(firms_rates, "t1.id=t4.firm_id", array());
escape(false)->column(t5.imgascat_img,t6.nameascat_name)->escape(true);">$q->escape(false)->column(t5.img as cat_img,t6.name as cat_name)->escape(true);
join(cats,"t5.id=t1.cat_id",array());">$q->join(cats, "t5.id=t1.cat_id", array());
join(cats_content,t5.id=t6.cat_id,array());">$q->join(cats_content, t5.id=t6.cat_id, array());
join(langs,"t6.lang_id=t7.id",array());">$q->join(langs, "t6.lang_id=t7.id", array());
$q->where(t1..$field, $value);(!$this->obj->is_admin && $this->load->database_original()->field_exists(showed, $this->descriptor->getTable())) {
where(t1.showed,true);">$q->where(