You are here

class _menu_editor_SubmitEngine in Menu Editor 6.3

Hierarchy

Expanded class hierarchy of _menu_editor_SubmitEngine

File

./menu_editor.admin.inc, line 398

View source
class _menu_editor_SubmitEngine {
  protected $_items = array();
  protected $_updated_items = array();
  protected $_fields = array(
    'expanded',
    'weight',
    'plid',
    'link_title',
    'link_path',
    'description',
  );
  protected $_language_options;
  protected $_menu_name;
  public function __construct($language_options, $menu_name) {
    $this->_language_options = $language_options;
    $this->_menu_name = $menu_name;
  }
  public function getItems() {
    return $this->_items;
  }
  public function getUpdatedItems() {
    return $this->_updated_items;
  }
  public function submitElement(&$element, $v, $item_key) {
    if (TRUE) {
      $item =& $element['#item'];
      $item_needs_update = false;
      if (!is_numeric($v['mlid'])) {

        // add new item
        unset($v['mlid']);
        if (!is_string($v['link_title']) || empty($v['link_title'])) {
          return;
        }
        if (!is_string($v['link_path']) || empty($v['link_path'])) {
          return;
        }
        $item['menu_name'] = $this->_menu_name;

        // Set all fields in this menu item.
        foreach ($this->_fields as $field) {
          $item[$field] = $v[$field];
        }
        $item_needs_update = true;
      }
      else {
        if ($v['delete']) {

          // delete existing item
          if (is_numeric($v['mlid'])) {
            menu_link_delete($v['mlid']);
            if (module_exists('i18nmenu')) {

              // See http://drupal.org/node/786230#comment-2911158
              _i18nmenu_delete_item($v['mlid']);
            }
          }
          return;
        }
        else {

          // update existing item
          // Update any fields that have changed in this menu item.
          foreach ($this->_fields as $field) {
            if ($v[$field] != $element[$field]['#default_value']) {
              $item[$field] = $v[$field];
              $item_needs_update = true;
            }
          }
        }
      }

      // Hidden is a special case, the value needs to be reversed.
      if ($v['hidden'] != $element['hidden']['#default_value']) {
        $item['hidden'] = !$v['hidden'];
        $item_needs_update = true;
      }

      // langcode is a special case as well
      if ($this->_language_options) {
        if ($v['language'] != $element['language']['#default_value']) {
          $item['options']['langcode'] = $v['language'];
          $item_needs_update = true;
        }
      }

      // description is a special case
      if (isset($item['description'])) {
        $item['options']['attributes']['title'] = $item['description'];
      }

      // put the item in our list
      $item['#update'] = $item_needs_update;
      $this->_items[$item_key] = $item;

      // if the item has been modified..
      if ($item_needs_update) {
        $this->_updated_items[$item_key] =& $this->_items[$item_key];
      }
    }
  }

}

Members