// Initialization field name, field types if (!isset($isSys)) { $isSys = 0; } if (isset($ClassID)) { $Id = $ClassID; } if (isset($SystemTableID) && $SystemTableID) { $Id = $SystemTableID; } if (isset($widgetclass_id) && $widgetclass_id) { $Id = $widgetclass_id; $isWidget = 1; } if (!isset($Id)) { $Id = $isSys ? GetSystemTableIDByFieldID($FieldID) : GetClassIDByFieldID($FieldID); } if ($isSys) { $main_section = "settings"; $item_id = 1; $Title1 = "<a href=\"" . $ADMIN_PATH . "field/system.php\">" . SECTION_SECTIONS_OPTIONS_SYSTEM . "</a>"; $Title2 = CONTROL_FIELD_FIELDS . " (" . GetSystemTableRusName($SystemTableID ? $SystemTableID : $Id) . ")"; $Title3 = "<a href=\"" . $ADMIN_PATH . "field/systemField.php?SystemTableID=" . $SystemTableID . "\">" . CONTROL_FIELD_FIELDS . " (" . GetSystemTableRusName($SystemTableID ? $SystemTableID : $Id) . ")</a>"; $DocPath = "http://" . $DOC_DOMAIN . "/settings/systables/fields/"; } else { $main_section = "control"; $item_id = 8; $Title1 = "<a href=\"" . $ADMIN_PATH . "class/\">" . CONTROL_CLASS . "</a>"; $Title2 = CONTROL_FIELD_FIELDS . " (" . GetClassNameByID($ClassID) . ")"; $Title3 = "<a href=\"" . $ADMIN_PATH . "field/?ClassID=" . $ClassID . "\">" . CONTROL_FIELD_FIELDS . " (" . GetClassNameByID($ClassID) . ")</a>"; $DocPath = "http://" . $DOC_DOMAIN . "/management/class/fields/";
/** * Insert into DB properties of field * * @param bool is field in system table * @return int field id ,0 - unknown error, -1 = incorrect field name, -2 = field name is mysql_keyword, -3 = field already exits * -4 = incorrect field format * */ function FieldCompleted() { global $db; global $ClassID, $SystemTableID, $widgetclass_id; global $Inheritance, $DoSearch, $InTableView; global $FieldID, $FieldName, $Description, $TypeOfData_ID, $TypeOfEdit_ID, $Format, $Format_String, $Format_FS, $Extension, $NotNull, $Priority, $DefaultState, $attachment, $download; global $format_height, $format_width, $format_html, $format_br, $format_fck, $format_panel, $format_typo, $format_bbcode, $use_calendar, $protect_email, $use_transliteration, $transliteration_field, $use_url_rules; global $isSys, $widgetclass_id; $nc_core = nc_Core::get_object(); $input = $nc_core->input; $ClassID = intval($ClassID); $FieldID = intval($FieldID); if ($TypeOfData_ID == 1) { $Format = $Format_String; } if ($FieldID) { $TableName = $isSys ? GetSystemTableName(GetSystemTableIDByFieldID($FieldID)) : "Message" . GetClassIDByFieldID($FieldID); } else { $TableName = $isSys ? GetSystemTableName($SystemTableID) : "Message" . $ClassID; } // widgets $widgetclass_id += 0; if ($FieldID) { $widgetclass_id = $db->get_var("SELECT `Widget_Class_ID` FROM `Field` WHERE `Field_ID`= '" . $FieldID . "'"); } $NotNull += 0; $DoSearch += 0; $InTableView += 0; $Inheritance += 0; $Priority += 0; $format_height += 0; $format_width += 0; $format_html += 0; $format_br += 0; $format_fck += 0; $format_panel += 0; $format_typo += 0; $format_bbcode += 0; $format_use_resize = (int) $input->fetch_post('format_use_resize'); $format_resize_width = (int) $input->fetch_post('format_resize_width'); $format_resize_height = (int) $input->fetch_post('format_resize_height'); $format_use_crop = (int) $input->fetch_post('format_use_crop'); $format_crop_x0 = (int) $input->fetch_post('format_crop_x0'); $format_crop_y0 = (int) $input->fetch_post('format_crop_y0'); $format_crop_x1 = (int) $input->fetch_post('format_crop_x1'); $format_crop_y1 = (int) $input->fetch_post('format_crop_y1'); $format_crop_ignore = (int) $input->fetch_post('format_crop_ignore'); $format_crop_ignore_width = (int) $input->fetch_post('format_crop_ignore_width'); $format_crop_ignore_height = (int) $input->fetch_post('format_crop_ignore_height'); $format_use_preview = (int) $input->fetch_post('format_use_preview'); $format_preview_width = (int) $input->fetch_post('format_preview_width'); $format_preview_height = (int) $input->fetch_post('format_preview_height'); $use_calendar += 0; // float field if ($TypeOfData_ID == 7) { $DefaultState = str_replace(",", ".", $DefaultState); } $FieldName = str_replace(' ', '', $FieldName); if (!isCorrectFormat($Format, $TypeOfData_ID)) { return -4; } if (nc_is_mysql_keyword($FieldName)) { return -2; } // Добавим к Формату тип файловой системы\ настройки textarea if ($TypeOfData_ID == NC_FIELDTYPE_FILE) { if (!$Format_FS) { $Format_FS = NC_FS_SIMPLE; } $Format .= ":fs" . $Format_FS; $Format .= ":" . ($attachment ? 'attachment' : 'inline'); $Format .= $download ? ':download' : ''; if (nc_substr($Format, 0, 1) == ':') { $Format = nc_substr($Format, 1); } $Format .= ";"; $Format .= "use_resize:" . $format_use_resize . ";"; $Format .= "resize_width:" . $format_resize_width . ";"; $Format .= "resize_height:" . $format_resize_height . ";"; $Format .= "use_crop:" . $format_use_crop . ";"; $Format .= "crop_x0:" . $format_crop_x0 . ";"; $Format .= "crop_y0:" . $format_crop_y0 . ";"; $Format .= "crop_x1:" . $format_crop_x1 . ";"; $Format .= "crop_y1:" . $format_crop_y1 . ";"; $Format .= "crop_ignore:" . $format_crop_ignore . ";"; $Format .= "crop_ignore_width:" . $format_crop_ignore_width . ";"; $Format .= "crop_ignore_height:" . $format_crop_ignore_height . ";"; $Format .= "use_preview:" . $format_use_preview . ";"; $Format .= "preview_width:" . $format_preview_width . ";"; $Format .= "preview_height:" . $format_preview_height . ";"; } else { if ($TypeOfData_ID == NC_FIELDTYPE_TEXT) { $Format = ($format_height ? $format_height : 5) . ":" . ($format_width ? $format_width : 60) . ";"; $Format .= "html:" . $format_html . ";br:" . $format_br . ";fck:" . $format_fck . ";"; $Format .= "panel:" . $format_panel . ";typo:" . $format_typo . ";bbcode:" . $format_bbcode . ";"; } else { if ($TypeOfData_ID == NC_FIELDTYPE_DATETIME && $use_calendar) { $Format .= ($Format ? ";" : "") . 'calendar'; } else { if ($TypeOfData_ID == NC_FIELDTYPE_STRING) { if ($Format == 'email' && $protect_email) { $Format .= ':protect'; } else { $Format .= ':'; } if ($use_transliteration) { $Format .= ':' . $use_transliteration; $Format .= ':' . $transliteration_field; $Format .= ':' . $use_url_rules; } } else { if ($TypeOfData_ID == NC_FIELDTYPE_MULTIFILE) { $Format .= ";"; $Format .= "use_resize:" . $format_use_resize . ";"; $Format .= "resize_width:" . $format_resize_width . ";"; $Format .= "resize_height:" . $format_resize_height . ";"; $Format .= "use_crop:" . $format_use_crop . ";"; $Format .= "crop_x0:" . $format_crop_x0 . ";"; $Format .= "crop_y0:" . $format_crop_y0 . ";"; $Format .= "crop_x1:" . $format_crop_x1 . ";"; $Format .= "crop_y1:" . $format_crop_y1 . ";"; $Format .= "crop_ignore:" . $format_crop_ignore . ";"; $Format .= "crop_ignore_width:" . $format_crop_ignore_width . ";"; $Format .= "crop_ignore_height:" . $format_crop_ignore_height . ";"; $Format .= "use_preview:" . $format_use_preview . ";"; $Format .= "preview_width:" . $format_preview_width . ";"; $Format .= "preview_height:" . $format_preview_height . ";"; } } } } } $Description = htmlspecialchars($Description); $Extension = $db->escape($Extension); // Add new field if (!$FieldID) { if (count($db->get_results($widgetclass_id ? "SELECT * FROM `Field` WHERE `Widget_Class_ID`='" . $widgetclass_id . "' AND `Field_Name`='" . $FieldName . "'" : "SHOW FIELDS FROM `" . $TableName . "` LIKE '" . $FieldName . "'"))) { return -3; } $fl1 = $isSys ? "`System_Table_ID`" : ($widgetclass_id ? "`Widget_Class_ID`" : "`Class_ID`"); $fl2 = $isSys ? "`Inheritance`" : "`DoSearch`"; $insert_field = "`Field` (" . $fl1 . ", " . $fl2 . ", `Field_Name`,`Description`,`TypeOfData_ID`,`Format`,`Extension`, `NotNull`,`Priority`,`DefaultState`,`TypeOfEdit_ID`,`InTableView`)"; $value = " VALUES ('"; $value .= $isSys ? $SystemTableID . "','" . $Inheritance : ($widgetclass_id ? $widgetclass_id . "','" . $DoSearch : $ClassID . "','" . $DoSearch); $value .= "','" . $FieldName . "','" . $Description . "'," . $TypeOfData_ID . ",'" . $Format . "', '" . $Extension . "' ," . $NotNull . "," . $Priority . ",'" . $DefaultState . "','" . $TypeOfEdit_ID . "','" . $InTableView . "')"; $query = "INSERT INTO " . $insert_field . $value; if (!$FieldName || nc_preg_match("/[^a-zA-Z0-9_]/", $FieldName)) { return -1; } if (!$FieldName || nc_preg_match("/^[\\d]+/", $FieldName)) { return -5; } // check if field name is already exists if (!$widgetclass_id) { $table = $ClassID ? "`Message" . $ClassID . "`" : $db->get_var("select `System_Table_Name` from `System_Table` where `System_Table_ID`=" . $SystemTableID); if ($db->column_exists($table, $FieldName)) { return -3; } } if ($db->query($query)) { $CurrentFieldID = $db->insert_id; if (!$widgetclass_id) { ColumnInMessage($CurrentFieldID, 1, $db); } } return $CurrentFieldID; } else { $NewFieldName = false; if (!$widgetclass_id) { if (!$FieldName || nc_preg_match("/[^a-zA-Z0-9_]/", $FieldName)) { return -1; } if (!$FieldName || nc_preg_match("/^[\\d]+/", $FieldName)) { return -5; } $sql = "SELECT `Field_Name` FROM `Field` WHERE `Field_ID` = {$FieldID} LIMIT 1"; $OldFieldName = $db->get_var($sql); if ($FieldName != $OldFieldName) { if ($db->column_exists($TableName, $FieldName)) { return -3; } $NewFieldName = $FieldName; } } $query = "UPDATE `Field` SET `Description`='" . $Description . "',`TypeOfData_ID`='" . $TypeOfData_ID . "',`Format`='" . $Format . "', `Extension` = '" . $Extension . "', `NotNull`='" . $NotNull; $query .= "',`Priority`='" . $Priority . "',`DefaultState`='" . $DefaultState . "',`TypeOfEdit_ID`='" . $TypeOfEdit_ID . "',`InTableView`='" . $InTableView . "'"; $query .= $isSys ? ", `Inheritance`='" . $Inheritance . "'" : ", `DoSearch`='" . $DoSearch . "'"; $query .= " WHERE `Field_ID`='" . $FieldID . "'"; if (($db->query($query) || $NewFieldName) && !$widgetclass_id) { ColumnInMessage($FieldID, 2, $db, $NewFieldName); } return $FieldID; } return 0; }