예제 #1
0
 /**
  * Изменение существующего виджета-компонента
  * @param mixed номер виджет-компонента или его keyword
  * @param array поля виджет-компонента
  * @return bool
  */
 public function edit_widgetclass($id, $params)
 {
     global $AUTH_USER_ID;
     $nc_core = $this->core;
     $db = $nc_core->db;
     if (!$this->widgetclasses_loaded) {
         $this->load();
     }
     $File_Mode = $this->widgetclasses[$id]['File_Mode'];
     if ($File_Mode) {
         $widget_editor = new nc_widget_editor($nc_core->WIDGET_TEMPLATE_FOLDER, $db);
         $widget_editor->load($id);
         $widget_editor->save_fields(null, true);
         $fs_params = $params;
         $params['AddForm'] = $params['EditForm'] = $params['AfterSaveAction'] = $params['BeforeSaveAction'] = '';
     }
     foreach ($params as $p => $value) {
         $query[] = "`" . $p . "`='" . $this->core->db->escape(addslashes($params[$p])) . "'";
     }
     $this->core->event->execute('editWidgetClassPrep', $this->get_id($id));
     $query = "UPDATE `Widget_Class` SET " . implode(',', $query) . $this->get_where($id) . "";
     $this->assistant('edit', array($id, $File_Mode ? $fs_params : $params));
     $db->query($query);
     $this->core->event->execute('editWidgetClass', $this->get_id($id));
     if (!$this->widgets_loaded) {
         $this->load('widgets');
     }
     foreach ($this->widgets as $w) {
         if ($w['Widget_Class_ID'] == $id) {
             $this->generate(intval($w['Widget_Class_ID']), '', 1, intval($w['Widget_ID']));
         }
     }
     return true;
 }