* @author Каючкин Александр * @access public */ /** * Целое число * * @link http://cms.alpha.inetra.ru * @version 1.0 * @copyright Copyright: 2003 Inetra, Inc. * @author Каючкин Александр * @access public */ class cmsIntegerType { /** * Дружественное имя. Например: "Целое число", "Строка" и т.д... * * @var string */ var $friendly_name = 'Целое число'; /** * Служебное имя (для столбцов таблиц, элементов форм и т.д.) * * @var string */ var $prefix = 'int1'; /** * Объект данных типа. Зависит от конкретной реализации. * * @var Int */ var $data = 0; /** * Mysql эквивалент типа * * @var string */ var $mysqlName = "int(11)"; /** * Pgsql эквивалент типа * * @var string */ var $pgsqlName = "integer"; /** * Методы класса. Составляют интерфейс для работы с данными. * */ /** * Дополнительные параметры для типов-наследников * * @var string */ var $params = ""; /** * Возвращает имя класса * * @return string */ function getClassName() { return "cmsIntegerType"; } /** * возвращает имя * @return string Дружественное имя класса */ function getName() { return $this->friendly_name; } /** * устанавливает имя * @param string Дружественное имя класса */ function setName($_friendly_name) { $this->friend_namely = $_friendly_name; return; } /** * возвращает служебное имя класса. * * @return string */ function getPrefix() { return $this->prefix; } /** * принимает служебное имя класса. * * @param string */ function setPrefix($_prefix) { $this->prefix = $_prefix; return; } /** * возвращает Mysql эквивалент. * * @return string */ function getMysqlName() { return $this->mysqlName; } /** * возвращает Mysql эквивалент. * * @return string */ function getPgsqlName() { return $this->pgsqlName; } /** * Возвращает данные. * * @return string */ function get() { return $this->data; } /** * Принимает значение. * * @param Mixed */ function set($_data) { $this->data = $_data; return; } /** * Берет значение из запроса POST * */ function getDataFromPOST() { global $_POST; $this->data = (int)$_POST[$this->prefix]; return; } /** * Возвращает SQL код для операции UPDATE * * @param string enum("mysql", "pgsql") * * @return string */ function getSQLUpdate($db_type = "mysql") { $sql = ""; switch ($db_type) { case "mysql" : $sql = $this->prefix." = ".$this->data; break; case "pgsql" : $sql = $this->prefix." = ".$this->data; break; default : $sql = $this->prefix." = ".$this->data; break; } return $sql; } /** * Возвращает SQL код для операции INSERT * * @param string enum("mysql", "pgsql") * * @return Array(2) */ function getSQLInsert($db_type = "mysql") { $sql = Array(); switch ($db_type) { case "mysql" : $sql[0] = $this->prefix; $sql[1] = $this->data; break; case "pgsql" : $sql[0] = $this->prefix; $sql[1] = $this->data; break; default : $sql[0] = $this->prefix; $sql[1] = $this->data; break; } return $sql; } /** * Возвращает HTML разметку данных. * * @return string */ function getHTMLData() { return $this->data; } /** * Возвращает элемент HTML формы для данного типа * * @return string */ function getFORMData() { return ""; } } /** * Строка * * @link http://cms.alpha.inetra.ru * @version 1.0 * @copyright Copyright: 2003 Inetra, Inc. * @author Каючкин Александр * @access public */ class cmsStringType extends cmsIntegerType { /** * Конструктор */ function cmsStringType() { $this->friendly_name = 'Строка'; $this->prefix = 'str1'; $this->data = ""; $this->mysqlName = "varchar(255)"; $this->pgsqlName = "varchar(255)"; $this->params = ""; } /** * Методы класса. Составляют интерфейс для работы с данными. * */ /** * Возвращает имя класса * * @return string */ function getClassName() { return "cmsStringType"; } /** * Берет значение из запроса POST * */ function getDataFromPOST() { global $_POST; $this->data = $_POST[$this->prefix]; return; } /** * Возвращает SQL код для операции UPDATE * * @param string enum("mysql", "pgsql") * * @return string */ function getSQLUpdate($db_type = "mysql") { $sql = ""; switch ($db_type) { case "mysql" : $sql = $this->prefix." = '".$this->data."'"; break; case "pgsql" : $sql = $this->prefix." = '".$this->data."'"; break; default : $sql = $this->prefix." = '".$this->data."'"; break; } return $sql; } /** * Возвращает SQL код для операции INSERT * * @param string enum("mysql", "pgsql") * * @return Array(2) */ function getSQLInsert($db_type = "mysql") { $sql = Array(); switch ($db_type) { case "mysql" : $sql[0] = $this->prefix; $sql[1] = "'".$this->data."'"; break; case "pgsql" : $sql[0] = $this->prefix; $sql[1] = "'".$this->data."'"; break; default : $sql[0] = $this->prefix; $sql[1] = "'".$this->data."'"; break; } return $sql; } /** * Возвращает HTML разметку данных. * * @return string */ function getHTMLData() { return Trim($this->data); } /** * Возвращает элемент HTML формы для данного типа * * @return string */ function getFORMData() { return ""; } } /** * Денежная единица * * @link http://cms.alpha.inetra.ru * @version 1.0 * @copyright Copyright: 2003 Inetra, Inc. * @author Каючкин Александр * @access public */ class cmsMoneyType extends cmsIntegerType { var $currency_types = Array(); var $display = 0; var $format = 0; /** * Конструктор */ function cmsMoneyType() { $this->friendly_name = 'Денежная единица'; $this->prefix = 'money1'; $this->data = ""; $this->mysqlName = "varchar(255)"; $this->pgsqlName = "varchar(255)"; $this->params = ""; $this->currency_types["RUS"] = "р"; $this->currency_types["USD"] = "$"; $this->currency_types["EUR"] = "€"; } /** * Методы класса. Составляют интерфейс для работы с данными. * */ /** * Возвращает имя класса * * @return string */ function getClassName() { return "cmsMoneyType"; } /** * Берет значение из запроса POST * */ function getDataFromPOST() { global $_POST; if ($_POST[$this->prefix]) $this->data = round((float)$_POST[$this->prefix], 2); else $this->data = 0.00; return; } /** * Возвращает SQL код для операции UPDATE * * @param string enum("mysql", "pgsql") * * @return string */ function getSQLUpdate($db_type = "mysql") { $sql = ""; switch ($db_type) { case "mysql" : $sql = $this->prefix." = '".$this->get()."'"; break; case "pgsql" : $sql = $this->prefix." = '".$this->get()."'"; break; default : $sql = $this->prefix." = '".$this->get()."'"; break; } return $sql; } /** * Возвращает SQL код для операции INSERT * * @param string enum("mysql", "pgsql") * * @return Array(2) */ function getSQLInsert($db_type = "mysql") { $sql = Array(); switch ($db_type) { case "mysql" : $sql[0] = $this->prefix; $sql[1] = "'".$this->get()."'"; break; case "pgsql" : $sql[0] = $this->prefix; $sql[1] = "'".$this->get()."'"; break; default : $sql[0] = $this->prefix; $sql[1] = "'".$this->get()."'"; break; } return $sql; } /** * Возвращает данные. * * @return string */ function get() { $this->data = round((float)$this->data, 2); return $this->data; } /** * Возвращает HTML разметку данных. * * @return string */ function getHTMLData() { if (!$this->params) return $this->get()."руб."; else { $_params_array = explode (":", $this->params); $data_currency = $_params_array[0]; $display_currency = $_params_array[1]; $currency_exchange = round((float)$_params_array[2], 2); if ($currency_exchange <= 0) $currency_exchange = 1; return round((float)($this->get() * $currency_exchange), 2);//." ".$this->currency_types[$display_currency]; } } /** * Возвращает элемент HTML формы для данного типа * * @return string */ function getFORMData() { $_params_array = explode (":", $this->params); $valute = $_params_array[0]; return " ".$this->currency_types[$valute]; } } /** * Text * * @link http://cms.alpha.inetra.ru * @version 1.0 * @copyright Copyright: 2003 Inetra, Inc. * @author Каючкин Александр * @access public */ class cmsTextType extends cmsIntegerType { /** * Конструктор */ function cmsTextType() { $this->friendly_name = 'Текст'; $this->prefix = 'text1'; $this->data = ""; $this->mysqlName = "text"; $this->pgsqlName = "text"; $this->params = ""; } /** * Методы класса. Составляют интерфейс для работы с данными. * */ /** * Возвращает имя класса * * @return string */ function getClassName() { return "cmsTextType"; } /** * Берет значение из запроса POST * */ function getDataFromPOST() { global $_POST; $this->data = $_POST[$this->prefix]; return; } /** * Возвращает SQL код для операции UPDATE * * @param string enum("mysql", "pgsql") * * @return string */ function getSQLUpdate($db_type = "mysql") { $sql = ""; switch ($db_type) { case "mysql" : $sql = $this->prefix." = '".$this->data."'"; break; case "pgsql" : $sql = $this->prefix." = '".$this->data."'"; break; default : $sql = $this->prefix." = '".$this->data."'"; break; } return $sql; } /** * Возвращает SQL код для операции INSERT * * @param string enum("mysql", "pgsql") * * @return Array(2) */ function getSQLInsert($db_type = "mysql") { $sql = Array(); switch ($db_type) { case "mysql" : $sql[0] = $this->prefix; $sql[1] = "'".$this->data."'"; break; case "pgsql" : $sql[0] = $this->prefix; $sql[1] = "'".$this->data."'"; break; default : $sql[0] = $this->prefix; $sql[1] = "'".$this->data."'"; break; } return $sql; } /** * Возвращает HTML разметку данных. * * @return string */ function getHTMLData() { return trim(str_replace("\n", "
", $this->data)); } /** * Возвращает элемент HTML формы для данного типа * * @return string */ function getFORMData() { return ""; } } /** * BigText * * @link http://cms.alpha.inetra.ru * @version 1.0 * @copyright Copyright: 2003 Inetra, Inc. * @author Каючкин Александр * @access public */ class cmsBigTextType extends cmsTextType { /** * Конструктор */ function cmsBigTextType() { $this->friendly_name = 'Большой текст (HTML-редактор)'; $this->prefix = 'bigtext1'; $this->data = ""; $this->mysqlName = "text"; $this->pgsqlName = "text"; $this->params = ""; } /** * Методы класса. Составляют интерфейс для работы с данными. * */ /** * Возвращает имя класса * * @return string */ function getClassName() { return "cmsBigTextType"; } /** * Берет значение из запроса POST * */ function getDataFromPOST() { global $_POST; $this->data = $_POST[$this->prefix]; return; } /** * Возвращает SQL код для операции UPDATE * * @param string enum("mysql", "pgsql") * * @return string */ function getSQLUpdate($db_type = "mysql") { $sql = ""; switch ($db_type) { case "mysql" : $sql = $this->prefix." = '".$this->data."'"; break; case "pgsql" : $sql = $this->prefix." = '".$this->data."'"; break; default : $sql = $this->prefix." = '".$this->data."'"; break; } return $sql; } /** * Возвращает SQL код для операции INSERT * * @param string enum("mysql", "pgsql") * * @return Array(2) */ function getSQLInsert($db_type = "mysql") { $sql = Array(); switch ($db_type) { case "mysql" : $sql[0] = $this->prefix; $sql[1] = "'".$this->data."'"; break; case "pgsql" : $sql[0] = $this->prefix; $sql[1] = "'".$this->data."'"; break; default : $sql[0] = $this->prefix; $sql[1] = "'".$this->data."'"; break; } return $sql; } /** * Возвращает HTML разметку данных. * * @return string */ function getHTMLData() { $this->data = trim(stripslashes($this->data)); return str_replace(" ", " ", $this->data); } /** * Возвращает элемент HTML формы для данного типа * * @return string */ function getFORMData() { $_data = $this->data; $_data = str_replace("\n", "", $_data); $_data = str_replace("\r", "", $_data); $_data = addslashes($_data); return " "; } } /** * Прикрепленный документ * * @link http://cms.alpha.inetra.ru * @version 1.0 * @copyright Copyright: 2003 Inetra, Inc. * @author Каючкин Александр * @access public */ class cmsFileType extends cmsStringType { var $path = ''; var $filename = ''; var $preview_image_width = 100; /** * Конструктор */ function cmsFileType() { $this->friendly_name = 'Файл (аттачмент или изображение)'; $this->prefix = 'doc1'; $this->path = ''; $this->filename = ''; $this->data = ""; $this->mysqlName = "varchar(255)"; $this->pgsqlName = "varchar(255)"; $this->params = ""; $this->preview_image_width = 100; } /** * Методы класса. Составляют интерфейс для работы с данными. * */ /** * Возвращает имя класса * * @return string */ function getClassName() { return "cmsFileType"; } /** * Берет значение из запроса POST * */ function getDataFromPOST() { global $HTTP_POST_FILES; $this->data = (empty($this->filename)) ? $HTTP_POST_FILES[$this->prefix]['name'] : $this->filename; if (!empty($this->path)) { $this->saveFile($this->path); } return; } /** * Возвращает SQL код для операции UPDATE * * @param string enum("mysql", "pgsql") * * @return string */ function getSQLUpdate($db_type = "mysql") { $sql = ""; switch ($db_type) { case "mysql" : $sql = $this->prefix." = '".$this->data."'"; break; case "pgsql" : $sql = $this->prefix." = '".$this->data."'"; break; default : $sql = $this->prefix." = '".$this->data."'"; break; } return $sql; } /** * Возвращает SQL код для операции INSERT * * @param string enum("mysql", "pgsql") * * @return Array(2) */ function getSQLInsert($db_type = "mysql") { $sql = Array(); switch ($db_type) { case "mysql" : $sql[0] = $this->prefix; $sql[1] = "'".$this->data."'"; break; case "pgsql" : $sql[0] = $this->prefix; $sql[1] = "'".$this->data."'"; break; default : $sql[0] = $this->prefix; $sql[1] = "'".$this->data."'"; break; } return $sql; } /** * Сохраняет POST аттачмент по заданному пути. * * @param string * * @return string */ function saveFile($_path, $_rewrite = False) { global $HTTP_POST_FILES, $_POST; $filepath = (empty($this->filename)) ? $_path.$HTTP_POST_FILES[$this->prefix]['name'] : $_path.$this->filename; $error = ""; { if (is_uploaded_file($HTTP_POST_FILES[$this->prefix]['tmp_name'])) { $_savefile = $filepath; if (!move_uploaded_file($HTTP_POST_FILES[$this->prefix]['tmp_name'], $_savefile)) { switch ($HTTP_POST_FILES[$this->prefix]['error']) { case 0: //no error; possible file attack! $error = "Возникла проблема при передаче файла"; break; case 1: //uploaded file exceeds the upload_max_filesize directive in php.ini $error = "Размер файла превышает максимально допустимый"; break; case 2: //uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the html form $error = "Размер файла превышает максимально допустимый"; break; case 3: //uploaded file was only partially uploaded $error = "Файл был передан с частичными повреждениями"; break; case 4: //no file was uploaded $error = "Файл не выбран"; break; default: //a default error, just in case! :) $error = "Возникла проблема при передаче файла"; break; } } else { $tmp = explode(".", $_savefile); $ext = strtolower($tmp[count($tmp)-1]); if ($ext == "jpeg") $ext = "jpg"; if (($ext == "jpg") || ($ext == "gif") || ($ext == "png") || ($ext != "bmp")) { dl("gd.so"); switch ($ext) { // case "gif": $im = ImageCreateFromGIF ($_savefile); break; case "jpg": $im = ImageCreateFromJPEG ($_savefile); break; case "png": $im = ImageCreateFromPNG ($_savefile); break; case "bmp": $im = ImageCreateFromWBMP ($_savefile); break; default : break; } if ($im && !$error) { $size = GetImageSize ($_savefile); $prop = $size[0] / $size[1]; if($prop > 1) { $otn = $this->preview_image_width / $size[0]; $preview_image_height = floor($size[1] * $otn); } else if($prop < 1) { $otn = $size[1] / $size[0]; $preview_image_height = floor($this->preview_image_width * $otn); } else $preview_image_height = $this->preview_image_width; $im_preview = ImageCreateTrueColor ($this->preview_image_width, $preview_image_height); if ($im_preview) { $_previewname = $_savefile.".preview.jpg"; imagecopyresampled ($im_preview, $im, 0, 0, 0, 0, $this->preview_image_width, $preview_image_height, $size[0], $size[1]); imagejpeg ($im_preview, $_previewname); imagedestroy ($im_preview); } imagedestroy ($im); } } } } } return $error; } /** * Возвращает HTML разметку данных. * * @return string */ function getHTMLData() { return Trim($this->data); } /** * Возвращает элемент HTML формы для данного типа * * @return string */ function getFORMData() { return "
"; } } /** * Boolean * * @link http://cms.alpha.inetra.ru * @version 1.0 * @copyright Copyright: 2003 Inetra, Inc. * @author Каючкин Александр * @access public */ class cmsBooleanType extends cmsIntegerType { /** * Конструктор */ function cmsBooleanType() { $this->friendly_name = 'Логическое значение (Y/N)'; $this->prefix = 'bool1'; $this->data = ""; $this->mysqlName = "varchar(1)"; $this->pgsqlName = "char(1)"; $this->params = ""; } /** * Методы класса. Составляют интерфейс для работы с данными. * */ /** * Возвращает имя класса * * @return string */ function getClassName() { return "cmsBooleanType"; } /** * Берет значение из запроса POST * */ function getDataFromPOST() { global $_POST; $this->data = (isset($_POST[$this->prefix])) ? "Y" : "N"; return; } /** * Возвращает SQL код для операции UPDATE * * @param string enum("mysql", "pgsql") * * @return string */ function getSQLUpdate($db_type = "mysql") { $sql = ""; switch ($db_type) { case "mysql" : $sql = $this->prefix." = '".$this->data."'"; break; case "pgsql" : $sql = $this->prefix." = '".$this->data."'"; break; default : $sql = $this->prefix." = '".$this->data."'"; break; } return $sql; } /** * Возвращает SQL код для операции INSERT * * @param string enum("mysql", "pgsql") * * @return Array(2) */ function getSQLInsert($db_type = "mysql") { $sql = Array(); switch ($db_type) { case "mysql" : $sql[0] = $this->prefix; $sql[1] = "'".$this->data."'"; break; case "pgsql" : $sql[0] = $this->prefix; $sql[1] = "'".$this->data."'"; break; default : $sql[0] = $this->prefix; $sql[1] = "'".$this->data."'"; break; } return $sql; } /** * Возвращает HTML разметку данных. * * @return string */ function getHTMLData() { return ($this->data == 'Y') ? "Y" : "N"; } /** * Возвращает элемент HTML формы для данного типа * * @return string */ function getFORMData() { $checked = ($this->data == 'Y') ? "checked" : ""; return ""; } } /** * List Type (Linked object) * * @link http://cms.alpha.inetra.ru * @version 1.0 * @copyright Copyright: 2003 Inetra, Inc. * @author Каючкин Александр * @access public */ class cmsListType extends cmsIntegerType { /** * Параметры (sql_table:sql_field:sql_key:sql_filter) * * @var string */ var $params = ""; /** * Конструктор */ function cmsListType() { $this->friendly_name = 'Выпадающий список'; $this->prefix = 'list1'; $this->data = 0; $this->mysqlName = "int(11)"; $this->pgsqlName = "integer"; $this->params = ""; } /** * Методы класса. Составляют интерфейс для работы с данными. * */ /** * Возвращает имя класса * * @return string */ function getClassName() { return "cmsListType"; } /** * Возвращает HTML разметку данных. * * @return string */ function getHTMLData() { $_params = explode(":", $this->params); if ($_params[0] && $_params[1]) // sql_table and sql_field { if (!$_params[2]) $_params[2] = "id"; if ($_params[3]) $_params[3] .= " AND "; $sql = "SELECT ".$_params[1]." FROM ".$_params[0]." WHERE $_params[3] ".$_params[2]." = ".$this->data; $val = $GLOBALS["db"]->getOne($sql); if (!DB::isError($val)) return $val; else return ""; } else return ""; } /** * Возвращает элемент HTML формы для данного типа * * @return string */ function getFORMData() { $_params = explode(":", $this->params); if ($_params[0] && $_params[1]) // sql_table and sql_field { if (!$_params[2]) $_params[2] = "id"; if ($_params[3]) $sql = "SELECT ".$_params[1].", ".$_params[2]." FROM ".$_params[0]." WHERE $_params[3] ORDER BY ".$_params[1]." ASC"; else $sql = "SELECT ".$_params[1].", ".$_params[2]." FROM ".$_params[0]." ORDER BY ".$_params[1]." ASC"; $arr = $GLOBALS["db"]->getAll($sql, DB_FETCHMODE_ASSOC); if (!DB::isError($arr)) { $ret = ""; return $ret; } else return ""; } else return ""; } } /** * Multi-Select List Type (Linked object) * * @link http://cms.alpha.inetra.ru * @version 1.0 * @copyright Copyright: 2003 Inetra, Inc. * @author Каючкин Александр * @access public */ class cmsMultiListType extends cmsStringType { /** * Конструктор */ function cmsMultiListType() { $this->friendly_name = 'Список (множественный выбор)'; $this->prefix = 'multilist1'; $this->data = Array(); $this->mysqlName = "varchar(255)"; $this->pgsqlName = "varchar(255)"; $this->params = ""; } /** * Возвращает имя класса * * @return string */ function getClassName() { return "cmsMultiListType"; } /** * Возвращает HTML разметку данных. * * @return string */ function getHTMLData($sql_filter = "") { $_params = explode(":", $this->params); $_data = explode(":", $this->data); $str_data = $_data[0]; for ($i = 1; $i < count($_data); $i++) { $str_data .= ",".$_data[$i]; } if ($_params[0] && $_params[1]) // sql_table and sql_field { if (!$_params[2]) $_params[2] = "id"; if ($_params[3]) $_params[3] .= " AND "; $sql = "SELECT ".$_params[1]." FROM ".$_params[0]." WHERE $_params[3] ".$_params[2]." in (".$str_data.")"; $val = $GLOBALS["db"]->getCol($sql); if (!DB::isError($val)) { for ($i = 0; $i < count($val); $i++) $str_val .= ($i+1).". ".$val[$i]."
"; return $str_val; } else return ""; } else return ""; } /** * Берет значение из запроса POST * */ function getDataFromPOST() { global $_POST; if (is_array($_POST[$this->prefix])) { $this->data = join(":", $_POST[$this->prefix]); } else { $this->data = ""; } return; } /** * Возвращает элемент HTML формы для данного типа * * @return string */ function getFORMData($sql_filter = "") { $_params = explode(":", $this->params); if ($_params[0] && $_params[1]) // sql_table and sql_field { if (!$_params[2]) $_params[2] = "id"; if ($_params[3]) $sql = "SELECT ".$_params[1].", ".$_params[2]." FROM ".$_params[0]." WHERE $_params[3] ORDER BY ".$_params[1]." ASC"; else $sql = "SELECT ".$_params[1].", ".$_params[2]." FROM ".$_params[0]." ORDER BY ".$_params[1]." ASC"; $arr = $GLOBALS["db"]->getAll($sql, DB_FETCHMODE_ASSOC); if (!DB::isError($arr)) { $ret = ""; return $ret; } else return ""; } else return ""; } } /** * Date Type * * @link http://cms.alpha.inetra.ru * @version 1.0 * @copyright Copyright: 2003 Inetra, Inc. * @author Каючкин Александр * @access public */ class cmsDateType extends cmsIntegerType { /** * Конструктор */ function cmsDateType() { $this->friendly_name = 'Дата / Время'; $this->prefix = 'date1'; $this->data = time(); $this->params = "d.m.Y"; $this->mysqlName = "int(11)"; $this->pgsqlName = "integer"; } /** * Возвращает имя класса * * @return string */ function getClassName() { return "cmsDateType"; } /** * Устанавливает формат данных. * * @param string */ function setFormat($_format) { $this->params = $_format; } /** * Возвращает HTML разметку данных. * * @return string */ function getHTMLData() { $monthes = Array("Января", "Февраля", "Марта", "Апреля", "Мая", "Июня", "Июля", "Августа", "Сентября", "Октября", "Ноября", "Декабря"); $html = ""; if (strchr($this->params, "d") != false) $html .= date("d", $this->data); if (strchr($this->params, "m") != false) $html .= " ".$monthes[1*date("m", $this->data)-1]; if (strchr($this->params, "Y") != false) $html .= " ".date("Y", $this->data); if (strchr($this->params, "H") != false) $html .= " ".date("H", $this->data); if (strchr($this->params, "i") != false) $html .= ":".date("i", $this->data); if (strchr($this->params, "s") != false) $html .= ":".date("s", $this->data); return $html; } /** * Берет значение из запроса POST * */ function getDataFromPOST() { global $_POST; $day = ($_POST[$this->prefix."_day"]) ? $_POST[$this->prefix."_day"] : 1; $month = ($_POST[$this->prefix."_month"]) ? $_POST[$this->prefix."_month"] : 1; $year = ($_POST[$this->prefix."_year"]) ? $_POST[$this->prefix."_year"] : 1970; $hour = ($_POST[$this->prefix."_hour"]) ? $_POST[$this->prefix."_hour"] : 0; $min = ($_POST[$this->prefix."_min"]) ? $_POST[$this->prefix."_min"] : 0; $sec = ($_POST[$this->prefix."_sec"]) ? $_POST[$this->prefix."_sec"] : 0; $this->data = mktime($hour, $min, $sec, $month, $day, $year); return; } /** * Возвращает элемент HTML формы для данного типа * * @return string */ function getFORMData() { if (!$this->data) $this->data = time(); $day = 1*date("d", $this->data); $month = 1*date("m", $this->data); $year = 1*date("Y", $this->data); $hour = 1*date("H", $this->data); $min = 1*date("i", $this->data); $sec = 1*date("s", $this->data); $html = ""; if (strchr($this->params, "d") != false) { $html .= ""; } if (strchr($this->params, "m") != false) { $monthes = Array("Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь"); //$monthes = Array("Января", "Февраля", "Марта", "Апреля", "Мая", "Июня", "Июля", "Августа", "Сентября", "Октября", "Ноября", "Декабря"); $html .= ""; } if (strchr($this->params, "Y") != false) { $html .= ""; } if (strchr($this->params, "H") != false) { $html .= "  Час: "; $html .= ""; } if (strchr($this->params, "i") != false) { $html .= "  Мин: "; $html .= ""; } if (strchr($this->params, "s") != false) { $html .= "  Сек: "; $html .= ""; } return $html; } /** * Возвращает данные. * * @return string */ function get() { $dd = $this->data; if ($dd < 1) $dd = 0; $dd_day = (strchr($this->params, "d") != false) ? date("d", $dd) : 1; $dd_month = (strchr($this->params, "m") != false) ? date("m", $dd) : 1; $dd_year = (strchr($this->params, "Y") != false) ? date("Y", $dd) : 1970; $dd_hour = (strchr($this->params, "H") != false) ? date("H", $dd) : 0; $dd_min = (strchr($this->params, "i") != false) ? date("i", $dd) : 0; $dd_sec = (strchr($this->params, "s") != false) ? date("s", $dd) : 0; $this->data = mktime($dd_hour, $dd_min, $dd_sec, $dd_month, $dd_day, $dd_year); return $this->data; } /** * Принимает значение. * * @param Mixed */ function set($_data) { $this->data = $_data; $this->data = $this->get(); return; } /** * Возвращает SQL код для операции UPDATE * * @param string enum("mysql", "pgsql") * * @return string */ function getSQLUpdate($db_type = "mysql") { $this->data = $this->get(); $sql = ""; switch ($db_type) { case "mysql" : $sql = $this->prefix." = ".$this->data; break; case "pgsql" : $sql = $this->prefix." = ".$this->data; break; default : $sql = $this->prefix." = ".$this->data; break; } return $sql; } /** * Возвращает SQL код для операции INSERT * * @param string enum("mysql", "pgsql") * * @return Array(2) */ function getSQLInsert($db_type = "mysql") { $this->data = $this->get(); $sql = Array(); switch ($db_type) { case "mysql" : $sql[0] = $this->prefix; $sql[1] = $this->data; break; case "pgsql" : $sql[0] = $this->prefix; $sql[1] = $this->data; break; default : $sql[0] = $this->prefix; $sql[1] = $this->data; break; } return $sql; } } ?> * @access private */ class DB_Tree { /** * Массив узлов * * @var Array Массив данных */ var $nodes = Array(); /** * Скользящий индекс узла. Используется для пробега по дереву. * * @var Int */ var $index = 0; /** * Database connection pointer * * @var Object Объект класса DB (Pear) */ var $conn = NULL; /** * Имя таблицы данных дерева * * Обязательные поля: * 1. id int Номер узла * 2. parent_id int Номер родительского узла * 3. position int Порядок сортировки (изначально равен id) * * @var String */ var $table = ""; /** * Дополнительные условия для выбора данных (WHERE STATEMENT FOR SELECT) * * @var String */ var $condition = ""; /** * Инициализирует объект * * @param Object DB - Коннектор * @param String Таблица данных */ function Init($_conn, $_table) { $this->conn = $_conn; $this->table = $_table; $this->index = 0; $this->nodes = Array(); $this->condition = ""; } function _getTree($node_id, $deep, $deep_koef) { if (!$this->conn) return; if (empty($this->condition)) $sql = "SELECT * FROM ".$this->table." WHERE parent_id = ".$node_id." ORDER BY position"; else $sql = "SELECT * FROM ".$this->table." WHERE parent_id = ".$node_id." AND $this->condition ORDER BY position"; $_nodes = $GLOBALS["db"]->getAll($sql, DB_FETCHMODE_ASSOC); for ($i = 0; $i < count($_nodes); $i++) { $this->nodes[$this->index] = $_nodes[$i]; $this->nodes[$this->index]["deep"] = $deep * $deep_koef; $this->index++; $this->_getTree($_nodes[$i]["id"], $deep + 1, $deep_koef); } } /** * Возвращает дерево данных * * @param int $id Узел с которого начинается обход * @param int $deep На сколько увеличивать глубину узла * @return mixed Массив данных */ function getTree($node_id, $deep = 1, $_condition = "") { $this->nodes = Array(); $this->index = 0; $this->condition = $_condition; $this->_getTree($node_id, 0, $deep); $this->condition = ""; return $this->nodes; } /** * Возвращает узел по номеру * * @param int $id Номер узла * @return mixed Объект данных узла */ function getNode($node_id, $_condition = "") { $sql = "SELECT * FROM ".$this->table." WHERE id = ".$node_id; if ($_condition) $sql .= " AND ".$_condition; $_node = $GLOBALS["db"]->getRow($sql, DB_FETCHMODE_ASSOC); return $_node; } /** * Возвращает родительский узел * * @param int $id Номер узла * @return mixed Объект данных узла */ function getParent($node_id, $_condition = "") { $sql = "SELECT parent_id FROM ".$this->table." WHERE id = ".$node_id; $_parent_id = $GLOBALS["db"]->getOne($sql); if ($_parent_id > 0) { $sql = "SELECT * FROM ".$this->table." WHERE id = ".$_parent_id; $_parent = $GLOBALS["db"]->getRow($sql, DB_FETCHMODE_ASSOC); return ($_parent["id"] > 0) ? $_parent : NULL; } return NULL; } /** * Возвращает массив дочерних узлов * * @param int $id Номер узла * @return Array Массив узлов */ function getChildren($node_id, $_condition = "") { if (!$_condition) $sql = "SELECT * FROM ".$this->table." WHERE parent_id = ".$node_id." ORDER BY position"; else $sql = "SELECT * FROM ".$this->table." WHERE parent_id = ".$node_id." AND ".$_condition." ORDER BY position"; return $GLOBALS["db"]->getAll($sql, DB_FETCHMODE_ASSOC); } /** * Возвращает массив узлов от самого узла до root (обратная навигация) * * @param int $id Номер узла * @return Array Массив узлов */ function getNodePath($node_id, $_condition = "") { $path = Array(); $sql = "SELECT * FROM ".$this->table." WHERE id = ".$node_id; if ($_condition) $sql .= " AND ".$_condition; $path[0] = $GLOBALS["db"]->getRow($sql, DB_FETCHMODE_ASSOC); $i = 0; while (true) { $sql = "SELECT * FROM ".$this->table." WHERE id = ".$path[$i]["parent_id"]; if ($_condition) $sql .= " AND ".$_condition; $nn = $GLOBALS["db"]->getRow($sql, DB_FETCHMODE_ASSOC); if ($nn["id"] > 0) { $path[++$i] = $nn; } else break; } return array_reverse($path); } /** * Поднимает узел на позицию вверх, относительно узлов этого же уровня * * @param int $id Номер узла */ function upNode($node_id, $_condition = "") { global $GLOBALS; $sql = "SELECT * FROM ".$this->table." WHERE id = ".$node_id; if ($_condition) $sql .= " AND ".$_condition; $node = $GLOBALS["db"]->getRow($sql, DB_FETCHMODE_ASSOC); if ($_condition) $sql = "SELECT * FROM ".$this->table." WHERE $_condition AND position < ".$node["position"]." AND parent_id = ".$node["parent_id"]." ORDER BY position DESC "; else $sql = "SELECT * FROM ".$this->table." WHERE position < ".$node["position"]." AND parent_id = ".$node["parent_id"]." ORDER BY position DESC "; switch (trim(substr($GLOBALS["dsn"], 0, strpos($GLOBALS["dsn"], ":")))) { case "pgsql": $sql .= " LIMIT 1 OFFSET 0"; break; case "mysql": $sql .= " LIMIT 0, 1"; break; default: die ("Unsupported database server - ".substr($GLOBALS["dsn"], 0, strpos($GLOBALS["dsn"], ":"))); } $nextnode = $GLOBALS["db"]->getRow($sql, DB_FETCHMODE_ASSOC); if ($node["id"] && $nextnode["id"]) { $sql = "UPDATE ".$this->table." SET position = ".$node["position"]." WHERE id = ".$nextnode["id"]; $GLOBALS["db"]->query($sql); $sql = "UPDATE ".$this->table." SET position = ".$nextnode["position"]." WHERE id = ".$node["id"]; $GLOBALS["db"]->query($sql); } } /** * Опускает узел на позицию вниз, относительно узлов этого же уровня * * @param int $id Номер узла */ function downNode($node_id, $_condition) { $sql = "SELECT * FROM ".$this->table." WHERE id = ".$node_id; if ($_condition) $sql .= " AND ".$_condition; $node = $GLOBALS["db"]->getRow($sql, DB_FETCHMODE_ASSOC); if ($_condition) $sql = "SELECT * FROM ".$this->table." WHERE $_condition AND position > ".$node["position"]." AND parent_id = ".$node["parent_id"]." ORDER BY position ASC "; else $sql = "SELECT * FROM ".$this->table." WHERE position > ".$node["position"]." AND parent_id = ".$node["parent_id"]." ORDER BY position ASC "; switch (trim(substr($GLOBALS["dsn"], 0, strpos($GLOBALS["dsn"], ":")))) { case "pgsql": $sql .= " LIMIT 1 OFFSET 0"; break; case "mysql": $sql .= " LIMIT 0, 1"; break; default: die ("Unsupported database server - ".substr($GLOBALS["dsn"], 0, strpos($GLOBALS["dsn"], ":"))); } $nextnode = $GLOBALS["db"]->getRow($sql, DB_FETCHMODE_ASSOC); if ($node["id"] && $nextnode["id"]) { $sql = "UPDATE ".$this->table." SET position = ".$node["position"]." WHERE id = ".$nextnode["id"]; $GLOBALS["db"]->query($sql); $sql = "UPDATE ".$this->table." SET position = ".$nextnode["position"]." WHERE id = ".$node["id"]; $GLOBALS["db"]->query($sql); } } /** * Удаляет узел из дерева * * @param int $id Номер узла * @param bool $all Если true, то удаляет рекурсивно все дочерние узлы, * иначе удаляет узел, а всех потомкам назначает вышестоящего родителя. */ function removeNode($node_id, $all = false) { $sql = "SELECT * FROM ".$this->table." WHERE id = ".$node_id; $node = $GLOBALS["db"]->getRow($sql, DB_FETCHMODE_ASSOC); if ($node["id"] < 1) return; if (!$all) { $sql = "DELETE FROM ".$this->table." WHERE id = ".$node["id"]; $GLOBALS["db"]->query($sql); $sql = "UPDATE ".$this->table." SET parent_id = ".$node["parent_id"]." WHERE parent_id = ".$node["id"]; $GLOBALS["db"]->query($sql); } else { $this->removeChildren($node_id); $this->removeNode($node_id, false); } } /** * Рекурсивно удаляет все дочерние ветви узла * * @param int $id Номер узла */ function removeChildren($node_id) { if ($node_id < 1) return; $children = $this->getChildren($node_id); for ($i = 0; $i < count($children); $i++) { $this->removeChildren($children[$i]["id"]); $this->removeNode($children[$i]["id"], false); } } } ?> 2008.gorenje - Правила -
Поздравляем победителей и благодарим всех за участие в нашем конкурсе!
Рисовать!

Правила

Как рисовать

Для рисования необходим Flash Player 9. Вы можете изменить фон рисунка (4 цвета), размер кисти, прозрачность цвета. Сам цвет выбирайте по клику на кружок.

Если вы еще не зарегистрированы - смело приступайте к рисованию. Процесс регистрации пройдете после сохранения рисунка.
Авторизоваться можно как до рисования, так и после.

Организатор акции

Фирма «Горенье д.д. Веленье», Словения  (далее – «Организатор Акции») с 6 декабря 2007 по 10 января 2008 года на территории Российской Федерации проводит акцию «Разрисуй холодильник и получи его в подарок».

Для участия в Акции участники должны зарегистрироваться с указанием:

  • ФИО
  • Город
  • Адрес
  • Контактный телефон
  • E-mail

Принимать участие в Акции можно неограниченное число раз.
Участники, предоставившие неверную информацию, будут исключены из числа участников.
Организаторы конкурса оставляют за собой право удалить рисунок без объяснения. 
Принимать участие в голосовании могут все желающие.

Круг лиц, допускаемых к участию в Акции

Граждане РФ, постоянно проживающие в РФ, достигшие 16 лет, за исключением лиц, не допускаемых к участию в Акции, как указано ниже.

Круг лиц, не допускаемых к участию в Акции

  • Сотрудники Организатора Акции.
  • Сотрудники рекламных агентств и другие юридические лица, привлекаемые к проведению Акции.
  • Физические лица, с которыми у Организатора Акции и/или Производителя заключены гражданско-правовые договоры на выполнение работ и/или оказание услуг.
  • Родственники любого из вышеуказанных лиц.

Приз

Призом является холодильник модели RK 6285 OAL с рисунком автора-победителя. 

Определение победителей и вручение подарков

На первом этапе конкурса путем голосования посетителей сайта определяются финалисты: 8 вариантов, набравшие наибольшее число голосов.
На втором этапе члены конкурсной комиссии, составленной из числа сотрудников Gorenje, среди финалистов определяют победителя.
Отправка приза будет производиться в течение 1-ого месяца после определения победителей. Вручение приза производится путем его отправки по почте на адрес, указанный участником.
Участники акции, регистрирующиеся на сайте, самостоятельно отвечают за последствия неверного указания своих контактных данных, в частности, фамилии, имени, отчества, почтового адреса, адреса электронной почты.



© 2007—2008 Gorenje

Jarency

gorenje
 
забыли пароль?