/** * Добавление нового виджета-компонента * @param array поля виджет-компонентв * @param bool импортируем ли? * @return integer id винджет-компонента */ public function add_widgetclass($params, $import = 0, $base_widgetclass_id = '') { global $AUTH_USER_ID; $File_Mode = +$_REQUEST['fs']; $nc_core = $this->core; $db = $this->core->db; if (!$this->widgetclasses_loaded) { $this->load(); } if ($this->widgetclasses_keys[$params['Keyword']] && $import) { $params['Keyword'] = $params['Keyword'] . "_import"; return $this->add_widgetclass($params, 1); } if ($this->widgetclasses_keys[$params['Keyword']] && !$import) { return false; } $this->core->event->execute('addWidgetClassPrep', 0); if ($File_Mode) { $fs_params = array('Template' => $params['Template'], 'Settings' => $params['Settings'], 'AddForm' => $params['AddForm'], 'EditForm' => $params['EditForm'], 'AfterSaveAction' => $params['AfterSaveAction'], 'BeforeSaveAction' => $params['BeforeSaveAction']); $params['Template'] = $params['Settings'] = $params['AddForm'] = $params['EditForm'] = $params['AfterSaveAction'] = $params['BeforeSaveAction'] = ''; } $params['IsStatic'] = (int) $params['IsStatic']; foreach ($params as $p => $value) { $query_key[] = "`" . $p . "`"; $query_key_assist[] = $p; if ($p == 'Keyword' && $import) { $query_par[] = "'" . $db->escape(addslashes($params[$p])) . "'"; $query_par_assist[] = $db->escape(addslashes($params[$p])); } else { $query_par[] = "'" . $db->escape(addslashes($params[$p])) . "'"; $query_par_assist[] = $db->escape(addslashes($params[$p])); } } $query = "INSERT INTO `Widget_Class` (" . implode(',', $query_key) . ",`User_ID`,`LastUser_ID`,`Created`,`LastUpdated`) VALUES (" . implode(',', $query_par) . ",'" . $AUTH_USER_ID . "','" . $AUTH_USER_ID . "','" . date('Y-m-d H:i:s') . "','" . date('Y-m-d H:i:s') . "')"; $db->query($query); $insert_id = $db->insert_id; $this->assistant('add', array($db->insert_id, $query_key_assist, $query_par_assist)); if ($base_widgetclass_id > 0) { $fields = $db->get_results("SELECT * FROM `Field` WHERE `Widget_Class_ID`='" . $base_widgetclass_id . "'"); $query = "INSERT INTO `Field` (`Class_ID`, `Field_Name`, `Description`, `TypeOfData_ID`, `Format`, `NotNull`, `Priority`, `DoSearch`, `DefaultState`, `Inheritance`, `System_Table_ID`, `Widget_Class_ID`, `TypeOfEdit_ID`, `Checked`) VALUES "; foreach ($fields as $f) { $query_arr[] = "(" . $f->Class_ID . ", '" . $f->Field_Name . "', '" . $f->Description . "', " . $f->TypeOfData_ID . ", '" . $f->Format . "', " . $f->NotNull . ", " . $f->Priority . ", " . $f->DoSearch . ", '" . $f->DefaultState . "', " . $f->Inheritance . ", " . $f->System_Table_ID . ", " . $insert_id . ", " . $f->TypeOfEdit_ID . ", " . $f->Checked . ")"; } $query .= implode(",", $query_arr); $db->query($query); } if ($File_Mode) { $widget_editor = new nc_widget_editor($nc_core->WIDGET_TEMPLATE_FOLDER, $nc_core->db); $widget_editor->load($insert_id); $widget_editor->save_new($fs_params); } $this->core->event->execute('addWidgetClass', $db->insert_id); return $insert_id; }