Дипломная работа по специальности 230201. 65 «Информационные системы и технологии» Разработка информационного web-сайта на основе системы «1с-битрикс: Управление сайтом»





НазваниеДипломная работа по специальности 230201. 65 «Информационные системы и технологии» Разработка информационного web-сайта на основе системы «1с-битрикс: Управление сайтом»
страница29/29
Дата публикации10.11.2014
Размер1.47 Mb.
ТипДиплом
100-bal.ru > Информатика > Диплом
1   ...   21   22   23   24   25   26   27   28   29

Приложение Д. Исходные коды файла init.php




CPageOption::SetOptionString("main", "nav_page_in_session", "N");

/**

* bool write_access_log(string filepath) - функция фиксирует запрошенный адрес в специальном файле

* @param string filepath - файл, в который нужно записать данные

* @return true в случае успешного завершения работы функции, false в противном случае

*/

function write_access_log($filepath)

{

if(SITE_SERVER_NAME == ""){

return false;

}

global $APPLICATION;

//получаем URL текущей запрошенной страницы, дополняя ее в начале именем сервера

$current_uri = "http://".SITE_SERVER_NAME.ToLower(

$APPLICATION->GetCurPageParam("", array(), true));

//$filepath = $_SERVER["DOCUMENT_ROOT"]."/".$filepath;

//флаг, указывающий, нужно ли записать URL в файл

$can_write = true;

//если файл существует

if(@file_exists($filepath)){

$fp_read = @fopen($filepath, "r");

if(!$fp_read){

fclose($fp_read);

return false;

}

//читаем его содержимое по строкам

while(!feof($fp_read)){

$exist_link = trim(fgets($fp_read));

//если URL уже есть в файле, отменяем запись

if(strcasecmp($exist_link, $current_uri) == 0){

$can_write = false;

break;

}

}

fclose($fp_read);

}

//пишем URL в файл

if($can_write){

if(@file_exists($filepath)){

//добавляем

$fp_append = @fopen($filepath, "a");

if(filesize($filepath) > 0){

$str = PHP_EOL.$current_uri;

}

else{

$str = $current_uri;

}

}

else{

//или создаем новый файл

$fp_append = @fopen($filepath, "w");

$str = $current_uri;

}

fwrite($fp_append, $str);

fclose($fp_append);

}

return true;

}

write_access_log($_SERVER["DOCUMENT_ROOT"]."/access_log.log");

/**

* Далее определяются константы типов и идентификаторов информационных блоков, используемых в проекте

*/
/**

* тип информационных блоков "Игры"

*/

define("IB_TYPE_GAMES", "ib_games");

/**

* тип информационных блоков "Обзоры"

*/

define("IB_TYPE_REVIEWS", "ib_reviews");

/**

* Информационный блок "Игры" => "Игры"

*/

define("IB_GAMES_PC", 1);

/**

* Информационный блок "Обзоры" => "Обзоры"

*/

define("IB_REVIEWS_PC", 2);
/**

* Далее определяются символьные коды свойств, используемых в обработчике добавление ИБ "Обзоры" и ИБ "Игры"

*/

/**

* Свойство "Оценка" ИБ "Обзоры"

*/

define("REVIEWS_PC_PROP_GAME", "GAME_ID");

/**

* Свойство "Метаоценка" ИБ "Игры"

*/

define("GAMES_PC_PROP_METAMARK", "MAIN_METAMARK");

/**

* Свойство "Оценка" ИБ "Обзоры"

*/

define("REVIEWS_PC_PROP_MARK", "MARK");
/**

* Указываем имя файла, в которое будет писать логи функция AddMessage2Log

*/

define("LOG_FILENAME", $_SERVER["DOCUMENT_ROOT"]."/bitrix/php_interface/init.log");

/**

* Текст при возникновении ошибки в работе базы данных

*/

define("DB_ERROR_TEXT", "Ошибка работы с данными");

/**

*/

define("CACHE_TIME", 3600);

/**

* Указываем пороговые минимальные значения для секторов метаоценок

*/

define("MIN_METAMARK_GREEN", 75);

define("MIN_METAMARK_YELLOW", 50);

/**

* Имя переменной, включающих ряд компонентов в режиме аякс-запроса

*/

define("AJAX_REQUEST_MODE_PARAM", "ajax_request_mode");

//список месяцев на русском языке

$arMonthNames = array(

1 => array("month" => "Январь", "month_a" => "января"),

2 => array("month" => "Февраль", "month_a" => "февраля"),

3 => array("month" => "Март", "month_a" => "марта"),

4 => array("month" => "Апрель", "month_a" => "апреля"),

5 => array("month" => "Май", "month_a" => "мая"),

6 => array("month" => "Июнь", "month_a" => "июня"),

7 => array("month" => "Июль", "month_a" => "июля"),

8 => array("month" => "Август", "month_a" => "августа"),

9 => array("month" => "Сентябрь", "month_a" => "сентября"),

10 => array("month" => "Октябрь", "month_a" => "октября"),

11 => array("month" => "Ноябрь", "month_a" => "ноября"),

12 => array("month" => "Декабрь", "month_a" => "декабря")

);
//подключение модуля "Информационные блоки"

CModule::IncludeModule("iblock");
//обработчики

AddEventHandler("iblock", "OnAfterIblockElementAdd", "add_review_handler");

AddEventHandler("iblock", "OnAfterIblockElementUpdate", "add_review_handler");

AddEventHandler("iblock", "OnBeforeIblockElementDelete", "delete_review_handler");

AddEventHandler("iblock", "onBeforeIblockElementAdd", "check_element_code");

AddEventHandler("iblock", "onBeforeIblockElementUpdate", "check_element_code");

/**

* bool delete_review_handler(int ID) - Обработчик события удаления элемента информационного блока "Обзоры" => "PC"

* @author dda

* @param int ID Идентификатор удаляемого элемента информационного блока

* @return true в случае успеха, false в противном случае

*/

function delete_review_handler($ID)

{

AddMessage2Log("Вызван обработчик delete_review_handler события OnAfterIblockElementDelete\n");

$db_current_element = CIBlockElement::GetByID($ID);

$ob_current_element = $db_current_element->GetNextElement();

//получаем поля элемента

$arFields = $ob_current_element->GetFields();

//и свойства

$arProperties = $ob_current_element->GetProperties();

//проверяем принадлежность добавляемого элемента к инфоблоку "Обзоры"

//и выходим, если это не так

if($arFields["IBLOCK_ID"] != IB_REVIEWS_PC){

AddMessage2Log("Обработчик завершил работу. Причина - элемент не того ИБ\n");

//return $arFields;

return true;

}

//запрос на получение свойств

if(!array_key_exists(REVIEWS_PC_PROP_GAME, $arProperties)){

return false;

}

$game_id = intval($arProperties[REVIEWS_PC_PROP_GAME]["VALUE"]);

//проверяем, есть ли элемент с таким ID=$game_id и, если нет, выходим

$db_game_check = CIBlockElement::GetByID($game_id);

if($db_game_check->SelectedRowsCount() <= 0){

AddMessage2Log("Обработчик завершил работу. Нет элемента с ID=".$game_id);

return false;

}

//получаем значения для других уже существующих обзоров с таким ID=$game_id

$review_filter = array(

"PROPERTY_".REVIEWS_PC_PROP_GAME => $game_id

);

$review_select = array(

"PROPERTY_".REVIEWS_PC_PROP_MARK,

);

$db_reviews_exists = CIBlockElement::GetList(array(), $review_filter, false, false, $review_select);

//считаем сумму оценок и среднее арифметическое

$summ_mark_for_game = 0 - $arProperties[REVIEWS_PC_PROP_MARK]["VALUE"];

while($ar_reviews_exists =$db_reviews_exists->GetNext()){

$summ_mark_for_game += $ar_reviews_exists["PROPERTY_".REVIEWS_PC_PROP_MARK."_VALUE"];

}

//записываем это значение в свойство с кодом GAMES_PC_PROP_METAMARK для элемента с ID=$game_id

$average = round($summ_mark_for_game/($db_reviews_exists->SelectedRowsCount() - 1));

CIBlockElement::SetPropertyValueCode($game_id, GAMES_PC_PROP_METAMARK, $average); #------- ЗАПРОС 4,5

AddMessage2Log("Обработчик завершил работу. Элементу с ID=".$game_id." в свойство ".GAMES_PC_PROP_METAMARK." записано значение ".$average."\n");

return true;

}

/** bool check_element_code(array &arFields)

* функция - обработчик добавления или изменения документа. Проверяет на валидность символьный код элемента

* @param array arFields - массив с полями элемента. Передается по ссылке

* @return Возвращает true, если символьный код валиден и false, если нет

*/

function check_element_code(&$arFields)

{

global $APPLICATION;

if(!eregi("^[a-zA-Z0-9_]+$", $arFields["CODE"])){

$APPLICATION->throwException("Символьный код может содержать только латинские буквы, цифры и знак \"_\"");

return false;

}

return true;

}

/**

* void add_review_handler(array &arFields) - Обработчик события добавления или изменения элемента информационного блока "Обзоры" => "PC"

* @author dda

* @param array arFields Массив данных добавленного(измененного элемента). Данный массив передается в функцию по ссылке и может быть изменен внутри неё

* @return Возвращаемых значений нет

*/

function add_review_handler(&$arFields)

{

AddMessage2Log("Вызван обработчик add_review_handler события OnAfterIblockElementAdd(Update)\n");

//проверяем принадлежность добавляемого элемента к инфоблоку "Обзоры"

//и выходим, если это не так

if($arFields["IBLOCK_ID"] != IB_REVIEWS_PC){

return;

}

//проверяем, что элемент добавлен и не возникло ошибок

if($arFields["ID"] > 0 && empty($arFields["RESULT_MESSAGE"])){

//запрос на получение свойств

$db_prop = CIBlockElement::GetProperty($arFields["IBLOCK_ID"], $arFields["ID"], array(), array("CODE" => REVIEWS_PC_PROP_GAME));

if($db_prop->SelectedRowsCount() <= 0){

AddMessage2Log("Обработчик завершил работу. нет свойства с кодом ".REVIEWS_PC_PROP_GAME."\n");

return;

}

$fetch = $db_prop->GetNext();

$game_id = intval($fetch["VALUE"]);

//проверяем, есть ли элемент с таким ID=$game_id и, если нет, выходим

$db_game_check = CIBlockElement::GetByID($game_id);

if($db_game_check->SelectedRowsCount() <= 0){

AddMessage2Log("Обработчик завершил работу. Нет элемента с ID=".$game_id);

return;

}

//получаем значения для других уже существующих обзоров с таким ID=$game_id

$review_filter = array(

"PROPERTY_".REVIEWS_PC_PROP_GAME => $game_id

);

$review_select = array(

"PROPERTY_".REVIEWS_PC_PROP_MARK,

);

$db_reviews_exists = CIBlockElement::GetList(array(), $review_filter, false, false, $review_select);

//считаем сумму оценок и среднее арифметическое

$summ_mark_for_game = 0;

while($ar_reviews_exists =$db_reviews_exists->GetNext()){

$summ_mark_for_game += $ar_reviews_exists["PROPERTY_".REVIEWS_PC_PROP_MARK."_VALUE"];

}

//записываем это значение в свойство с кодом GAMES_PC_PROP_METAMARK для элемента с ID=$game_id

$average = round($summ_mark_for_game/$db_reviews_exists->SelectedRowsCount());

CIBlockElement::SetPropertyValueCode($game_id, GAMES_PC_PROP_METAMARK, $average);

AddMessage2Log("Обработчик завершил работу. Элементу с ID=".$game_id." в свойство ".GAMES_PC_PROP_METAMARK." записано значение ".$average."\n");

}

}

/**

* array get_iblock_type_list(array ar_sort) - функция получения списка информационных блоков

* @author dda

* @param array ar_sort - массив вида ("поле_сортировки" => "направление_сортировки"), указывающий, как сортировать список типов информационных блоков

* @return array ar_iblock_type - возвращает список типов информационных блоков

*/

function get_iblock_type_list($ar_sort)

{

$db_iblock_type = CIBlockType::GetList(array("NAME" => "ASC"));

$ar_iblock_type = array();

while($fetch = $db_iblock_type->GetNext()){

if($fetch_lang = CIBlockType::GetByIDLang($fetch["ID"], LANG)){

$ar_iblock_type[$fetch_lang["ID"]] = "[".$fetch_lang["ID"]."] ".$fetch_lang["NAME"];

}

}

return $ar_iblock_type;

}

/**

* array get_iblock_list(string type_id, array ar_sort, bool bActive = true) - функция получения информационных блоков по типу type_id

* @author dda

* @param string type_id - тип информационного блока (идентификатор)

* @param array ar_sort - массив вида ("поле_сортировки" => "направление_сортировки"), указывающий, как сортировать список информационных блоков

* @param bool bActive - флаг, указывющий, выбирать ли только активные инфоблоки. Необязательный, по умолчанию true, т.е. выбирать только активные

* @return array ar_iblock - возвращает список информационных блоков

*/

function get_iblock_list($type_id, $ar_sort, $bActive = true, $field = "ID")

{

$arFilter = array(

"TYPE" => $type_id,

);

if($bActive){

$arFilter["ACTIVE"] = "Y";

}

$db_iblock = CIBlock::GetList($ar_sort, $arFilter);

$ar_iblock = array();

while($fetch = $db_iblock->GetNext()){

$ar_iblock[$fetch[$field]] = "[".$fetch[$field]."] ".$fetch["NAME"];

}

return $ar_iblock;

}

/**

* void prepare_params(&arParams)

* фунцкия обрабатывает массив $arParams, приходящий в файл component.php компонента (удаление лишних пробелов, экранирование и т.д.)

* @author dda

* @param arParams - массив параметров, передается по ссылке

* @return функция ничего не возвращает

*/

function prepare_params(&$arParams)

{

foreach($arParams as $key => $param){

if(!is_array($param)){

$arParams[$key] = trim($param);

}

else{

foreach($param as $p_key => $p_param){

$param[$p_key] = trim($p_param);

}

$arParams[$key] = $param;

}

}

}

/**

* bool is_ajax_request()

* в функции проверяется, запущена ли страница в режиме ajax-запроса

* @return true в случае, если страница запущена в режиме ajax-запроса и false в противном случае

*/

function is_ajax_request()

{

return (isset($_REQUEST[AJAX_REQUEST_MODE_PARAM]) && $_REQUEST[AJAX_REQUEST_MODE_PARAM] == "Y");

}

/**

* string get_ajax_param()

* функция возвращает имя переменной, отвечающей за запуск страницы в режиме ajax-запроса

*/

function get_ajax_param()

{

return defined(AJAX_REQUEST_MODE_PARAM) ? AJAX_REQUEST_MODE_PARAM : "ajax_request_mode";

}

/** array get_parts_reg(string value[,string pattern]) - функция обрабатывает строку <название> [значение] и возвращает части в

* виде массива регулярного выражения или false в случае ошибки

* @param string value - строка, подлежащая разбору

* @param string pattern - регуляное выражение. Необязательное, по умолчанию - "/\[\b(\d+)(.)\]/i"

*/

function get_parts_reg($value, $pattern = "/\[\b(\d+)(.)\]/i")

{

//ищем последнее вхождение открывающей значение скобки

$skob_pos = mb_strpos($value, "[", 0, LANG_CHARSET);

//если скобка не найдена, выходим

if($skob_pos === false){

return false;

}

//вырезаем 2 части - текст и значение

$text = trim(mb_substr($value, 0, $skob_pos, LANG_CHARSET));

$val = trim(mb_substr($value, $skob_pos, (mb_strlen($value, LANG_CHARSET) - mb_strlen($text, LANG_CHARSET)), LANG_CHARSET));

//обрабатываем значение - проверяем наличие правильного шаблона

if(!preg_match($pattern, $val, $matches)){

return false;

}

return array("matches" => $matches, "text" => $text);

}

/** int get_max_day(int month, int year) - функция возвращает максимальный день в зависимости от года и месяца

* @param int current_month - месяц

* @param int current_year - год

* @return возвращает число месяца

*/

function get_max_day($current_month, $current_year)

{

if($current_month == 2){

if($_REQUEST["year"] % 4 == 0){

$top_day = 29;

}

else{

$top_day = 28;

}

}

elseif($current_month < 8){

if($current_month % 2 == 0){

$top_day = 30;

}

else{

$top_day = 31;

}

}

elseif($current_month >= 8){

if($current_month % 2 != 0){

$top_day = 30;

}

else{

$top_day = 31;

}

}

return $top_day;

}

?>


1   ...   21   22   23   24   25   26   27   28   29

Похожие:

Дипломная работа по специальности 230201. 65 «Информационные системы и технологии» Разработка информационного web-сайта на основе системы «1с-битрикс: Управление сайтом» iconРабочая программа по дисциплине “алгоритмизация и программирование”...
Алгоритмизация и программирование” составлена в соответствии с требованиями Государственного общеобразовательного стандарта высшего...
Дипломная работа по специальности 230201. 65 «Информационные системы и технологии» Разработка информационного web-сайта на основе системы «1с-битрикс: Управление сайтом» iconРабочая программа по дисциплине «Мировые информационные ресурсы и...
Рабочая программа составлена на основании Государственного образовательного стандарта впо по специальности 230201 – Информационные...
Дипломная работа по специальности 230201. 65 «Информационные системы и технологии» Разработка информационного web-сайта на основе системы «1с-битрикс: Управление сайтом» iconРабочая программа по дисциплине «Архитектура ЭВМ и систем» для специальности...
Рабочая программа составлена на основании Государственного образовательного стандарта по специальности 230201 – «Информационные системы...
Дипломная работа по специальности 230201. 65 «Информационные системы и технологии» Разработка информационного web-сайта на основе системы «1с-битрикс: Управление сайтом» iconПрограмма по курсу «Реинжиниринг бизнес-процессов» для специальности...
Рабочая программа по курсу «Реинжиниринг бизнес- процессов» составлена на основании учебного плана специальности 230201 «Информационные...
Дипломная работа по специальности 230201. 65 «Информационные системы и технологии» Разработка информационного web-сайта на основе системы «1с-битрикс: Управление сайтом» iconРабочая программа составлена на основании требований: Федерального...
Плана учебного процесса бгту им. В. Г. Шухова по направлению подготовки 230201 «Информационные системы и технологии», введенного...
Дипломная работа по специальности 230201. 65 «Информационные системы и технологии» Разработка информационного web-сайта на основе системы «1с-битрикс: Управление сайтом» iconПрограмма по дисциплине «Распределенные информационные системы»
Учебная программа по дисциплине «Распределенные информационные системы» составлена в соответствии с требованиями гос впо. Предназначена...
Дипломная работа по специальности 230201. 65 «Информационные системы и технологии» Разработка информационного web-сайта на основе системы «1с-битрикс: Управление сайтом» iconРабочая программа по курсу «Имитационное моделирование экономических...
«Имитационное моделирование экономических процессов» составлена в соответствии с требованиями государственного образовательного стандарта...
Дипломная работа по специальности 230201. 65 «Информационные системы и технологии» Разработка информационного web-сайта на основе системы «1с-битрикс: Управление сайтом» iconПрограмма по формированию навыков безопасного поведения на дорогах...
Управление сайтом". При составлении документа подразумевалось, что разработчик владеет терминологией и основными приемами работы...
Дипломная работа по специальности 230201. 65 «Информационные системы и технологии» Разработка информационного web-сайта на основе системы «1с-битрикс: Управление сайтом» iconРабочая программа дисциплины «управление данными»
Программа разработана в соответствии с Государственным образовательным стандартом по специальности 230201 «Информационные системы...
Дипломная работа по специальности 230201. 65 «Информационные системы и технологии» Разработка информационного web-сайта на основе системы «1с-битрикс: Управление сайтом» iconПрограмма по дисциплине «Глобальные проблемы совре-менности»
Предназначена студентам по специальности 230201. 65 «Информационные системы и технологии»
Дипломная работа по специальности 230201. 65 «Информационные системы и технологии» Разработка информационного web-сайта на основе системы «1с-битрикс: Управление сайтом» iconМетодическое пособие по выполнению, оформлению и защите курсовых...
Методическое пособие предназначено для бакалавриата Кубанского государственного аграрного университета по специальности 230400. 62...
Дипломная работа по специальности 230201. 65 «Информационные системы и технологии» Разработка информационного web-сайта на основе системы «1с-битрикс: Управление сайтом» iconУчебно-методический комплекс для студентов специальности 230201....
Федеральное государственного бюджетное учреждение высшего профессионального образования
Дипломная работа по специальности 230201. 65 «Информационные системы и технологии» Разработка информационного web-сайта на основе системы «1с-битрикс: Управление сайтом» iconУчебно-методический комплекс для студентов специальности 230201....
Федеральное государственное бюджетное учреждение высшего профессионального образования
Дипломная работа по специальности 230201. 65 «Информационные системы и технологии» Разработка информационного web-сайта на основе системы «1с-битрикс: Управление сайтом» iconУчебно-методический комплекс для студентов специальности 230201....
Рассмотрено на заседании умк института математики и компьютерных наук, протокол №
Дипломная работа по специальности 230201. 65 «Информационные системы и технологии» Разработка информационного web-сайта на основе системы «1с-битрикс: Управление сайтом» iconОтчет о результатах самообследования основных образовательных программ...
Работа кафедр по устранению недостатков, отмеченных в ходе предыдущей аккредитации
Дипломная работа по специальности 230201. 65 «Информационные системы и технологии» Разработка информационного web-сайта на основе системы «1с-битрикс: Управление сайтом» iconМетодические указания для студентов-магистрантов дневной формы обучения...
Методическая разработка предназначена для студентов- магистрантов направлений 230400. 68 «Информационные системы и технологии» и230100....


Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
100-bal.ru
Поиск