Пример #1
0
 public function __construct()
 {
     parent::__construct('add_category');
     $this->loadHttpVars();
     if ($this->loginError) {
         return;
     }
     $category = new pdCategory();
     if (isset($this->cat_id)) {
         if (!is_numeric($this->cat_id)) {
             $this->pageError = true;
             return;
         }
         $result = $category->dbLoad($this->db, $this->cat_id);
         if (!$result) {
             $this->pageError = true;
             return;
         }
     }
     if (isset($this->numNewFields)) {
         if (!is_numeric($this->numNewFields)) {
             $this->pageError = true;
             return;
         }
     } else {
         $this->numNewFields = 0;
     }
     if ($category->cat_id != '') {
         $label = 'Edit Category';
     } else {
         $label = 'Add Category';
     }
     $this->pageTitle = $label;
     $form = new HTML_QuickForm('catForm');
     $form->addElement('header', null, $this->helpTooltip($label, 'addCategoryPageHelp', 'helpHeading'));
     $form->addElement('text', 'catname', 'Category Name:', array('size' => 50, 'maxlength' => 250));
     $form->addRule('catname', 'category name cannot be empty', 'required', null, 'client');
     // info list
     $label = 'Related Fields:';
     $info_list = pdInfoList::create($this->db);
     foreach ($info_list as $info_id => $name) {
         $form->addElement('advcheckbox', 'info[' . $info_id . ']', $label, $name, null, array('', $name));
         $label = '';
     }
     for ($i = 0; $i < $this->numNewFields; $i++) {
         $form->addElement('text', 'new_fields[' . $i . ']', 'New field ' . ($i + 1) . ':', array('size' => 50, 'maxlength' => 250));
     }
     $form->addElement('hidden', 'numNewFields', $this->numNewFields);
     $form->addGroup(array(HTML_QuickForm::createElement('reset', 'reset', 'Reset'), HTML_QuickForm::createElement('button', 'add_field', 'Add Related Field', array('onClick' => 'dataKeep(' . ($this->numNewFields + 1) . ');')), HTML_QuickForm::createElement('submit', 'submit', 'Submit New Category')), 'submit_group', null, '&nbsp;');
     if ($form->validate()) {
         $values = $form->exportValues();
         $category->category = $values['catname'];
         if (isset($values['new_fields'])) {
             $values['info'] = array_merge($values['info'], $values['new_fields']);
         }
         foreach ($values['info'] as $infoname) {
             if ($infoname == '') {
                 continue;
             }
             $obj = new stdClass();
             $obj->name = $infoname;
             $category->info[] = $obj;
         }
         $category->dbSave($this->db);
         echo 'Category "', $category->category, '" succesfully added to the database.', '<p/>', '<a href="' . $_SERVER['PHP_SELF'] . '">', 'Add another new category</a>';
     } else {
         foreach (array_keys(get_class_vars(get_class($this))) as $member) {
             $defaults[$member] = $this->{$member};
         }
         $defaults['catname'] = $category->category;
         if (isset($category->info) && count($category->info) > 0) {
             foreach ($category->info as $info_id => $name) {
                 $defaults['info[' . $info_id . ']'] = $name;
             }
         }
         $form->setDefaults($defaults);
         $renderer =& $form->defaultRenderer();
         $form->accept($renderer);
         $this->form =& $form;
         $this->renderer =& $renderer;
         $this->javascript();
     }
 }
Пример #2
0
 public function dbSaveInfo($db)
 {
     if (!isset($this->info)) {
         return;
     }
     $info_list = pdInfoList::create($db);
     $arr = array();
     foreach ($this->info as $info) {
         if (!in_array($info->name, $info_list)) {
             $db->insert('info', array('name' => $info->name), 'pdCategory::dbSaveInfo');
         }
         $r = $db->selectRow('info', 'info_id', array('name' => $info->name), 'pdPublication::dbSaveInfo');
         assert('($r !== false)');
         array_push($arr, array('cat_id' => $this->cat_id, 'info_id' => $r->info_id));
         $info->info_id = $r->info_id;
     }
     if (isset($this->cat_id)) {
         $db->delete('cat_info', array('cat_id' => $this->cat_id), 'pdUser::dbSave');
     }
     if (count($arr) > 0) {
         $db->insert('cat_info', $arr, 'pdCategory::dbSaveInfo');
     }
 }