Exemple #1
0
 /**
  * Добавление нового виджета-компонента
  * @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;
 }