/** * Save one menu item. * * @param MenuItem $menuItem * @return integer */ public function saveItem(MenuItem $menuItem) { $fields = array('href' => $menuItem->getHref(), 'title' => $menuItem->getTitle(), 'menu_id' => $menuItem->getMenuId(), 'sort' => $menuItem->getSort(), 'parent_id' => $menuItem->getParentId(), 'page_id' => $menuItem->getSiteId(), 'box_id' => $menuItem->getBoxId(), 'box_key' => $menuItem->getBoxKey(), 'type' => $menuItem->getType(), 'module_key' => $menuItem->getModuleKey()); foreach ($fields as $key => $value) { if ($value === null) { unset($fields[$key]); } } $itemId = (int) $this->db()->select('id', 'menu_items', array('id' => $menuItem->getId()))->execute()->fetchCell(); if ($itemId) { $this->db()->update('menu_items')->values($fields)->where(array('id' => $itemId))->execute(); } else { $itemId = $this->db()->insert('menu_items')->values($fields)->execute(); } return $itemId; }