Разработка 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(