Example #1
0
 /**
  * Edit an element
  */
 function edit()
 {
     global $_PROFILER;
     JDEBUG ? $_PROFILER->mark('edit: start') : null;
     $app =& JFactory::getApplication();
     $user =& JFactory::getUser();
     $db =& JFactory::getDBO();
     $acl =& JFactory::getACL();
     $model =& JModel::getInstance('element', 'FabrikModel');
     if ($this->_task == 'edit') {
         $cid = JRequest::getVar('cid', array(0), 'method', 'array');
         $cid = array((int) $cid[0]);
     } else {
         $cid = array(0);
     }
     $model->setId($cid[0]);
     $row =& $model->getElement();
     if ($cid) {
         $row->checkout($user->get('id'));
     }
     // get params definitions
     $params =& $model->getParams();
     require_once JPATH_COMPONENT . DS . 'views' . DS . 'element.php';
     $pluginManager =& JModel::getInstance('Pluginmanager', 'FabrikModel');
     $db->setQuery("SELECT COUNT(*) FROM #__fabrik_groups");
     $total = $db->loadResult();
     if ($total == 0) {
         $app->redirect("index.php?option=com_fabrik&c=group&task=new", JText::_('PLEASE CREATE A GROUP BEFORE CREATING AN ELEMENT'));
         return;
     }
     $lists = array();
     if ($cid[0] != '0') {
         $aEls = array();
         $aGroups = array();
         $db->setQuery("SELECT form_id FROM #__fabrik_formgroup AS fg\n" . "WHERE fg.group_id = {$row->group_id}");
         $formrow = $db->loadObject();
         if (is_null($formrow)) {
             $aEls[] = $aGroups[] = JText::_('GROUP MUST BE IN A FORM');
         } else {
             $formModel = JModel::getInstance('form', 'FabrikModel');
             $formModel->setId($formrow->form_id);
             //get available element types
             $groups =& $formModel->getGroupsHiarachy();
             foreach ($groups as $groupModel) {
                 $group =& $groupModel->getGroup();
                 $o = new stdClass();
                 $o->label = $group->name;
                 $o->value = "fabrik_trigger_group_group" . $group->id;
                 $aGroups[] = $o;
                 $elementModels =& $groupModel->getMyElements();
                 foreach ($elementModels as $elementModel) {
                     $o = new stdClass();
                     $element =& $elementModel->getElement();
                     $o->label = FabrikString::getShortDdLabel($element->label);
                     $o->value = "fabrik_trigger_element_" . $elementModel->getFullName(false, true, false);
                     $aEls[] = $o;
                 }
             }
         }
         asort($aEls);
         $o = new StdClass();
         $o->groups = $aGroups;
         $o->elements = array_values($aEls);
         $lists['elements'] = $o;
     } else {
         // set the publish default to 1
         $row->state = '1';
         $lists['elements'] = array(JText::_('AVAILABLE ONCE SAVED'));
     }
     JDEBUG ? $_PROFILER->mark('edit: after element types') : null;
     $pluginManager->getPlugInGroup('validationrule');
     $pluginManager->loadPlugInGroup('element');
     $j = new JRegistry();
     $lists['jsActions'] = $model->getJSActions();
     //merge the js attribs back into the array
     foreach ($lists['jsActions'] as $js) {
         $j->loadINI($js->attribs);
         $a = $j->toArray();
         foreach ($a as $k => $v) {
             $js->{$k} = $v;
         }
         unset($js->attribs);
     }
     $no_html = JRequest::getBool('no_html', 0);
     // Create the form
     $form = new fabrikParams('', JPATH_COMPONENT . DS . 'models' . DS . 'element.xml');
     $form->bind($row);
     $form->loadINI($row->attribs);
     $row->parent_id = (int) $row->parent_id;
     if ($row->parent_id === 0) {
         $lists['parent'] = 0;
     } else {
         $sql = "SELECT * FROM #__fabrik_elements WHERE id = " . (int) $row->parent_id;
         $db->setQuery($sql);
         $parent = $db->loadObject();
         if (is_null($parent)) {
             //perhaps the parent element was deleted?
             $lists['parent'] = 0;
             $row->parent_id = 0;
         } else {
             $lists['parent'] = $parent;
         }
     }
     JDEBUG ? $_PROFILER->mark('view edit: start') : null;
     if ($no_html != 1) {
         FabrikViewElement::edit($row, $pluginManager, $lists, $params, $form);
     }
 }