<?php

/**
 * @package      Projectfork
 *
 * @author       Tobias Kuhn (eaxs)
 * @copyright    Copyright (C) 2006-2012 Tobias Kuhn. All rights reserved.
 * @license      http://www.gnu.org/licenses/gpl.html GNU/GPL, see LICENSE.txt
 */
defined('_JEXEC') or die;
$db = JFactory::getDbo();
$query = $db->getQuery(true);
// Get the Menu model
JLoader::register('MenusModelMenu', JPATH_ADMINISTRATOR . '/components/com_menus/models/menu.php');
$options = array('ignore_request' => true);
$menu_model = new MenusModelMenu($options);
// Find the menu id
$query->select('id')->from('#__menu_types')->where('menutype = ' . $db->quote('projectfork'));
$db->setQuery($query->__toString());
$menu_id = (int) $db->loadResult();
if (!$menu_id) {
    return false;
}
$data = array($menu_id);
// Delete the menu
return $menu_model->delete($data);
$query->clear();
$query->delete('#__menu')->where('title = ' . $db->quote('com_projectfork'))->where('menutype = ' . $db->quote('main'));
$db->setQuery($query);
$db->execute();
// Check if a projectfork menu already exists
$query->clear();
$query->select('COUNT(id)')->from('#__menu_types')->where('menutype = ' . $db->quote('projectfork'));
$db->setQuery((string) $query);
$menu_exists = (int) $db->loadResult();
// Do nothing if the menu exists
if ($menu_exists) {
    return true;
}
// Get the Menu model
JLoader::register('MenusModelMenu', JPATH_ADMINISTRATOR . '/components/com_menus/models/menu.php');
$menu_model = new MenusModelMenu(array('ignore_request' => true));
// Create the menu
$data = array('title' => 'Projectfork', 'menutype' => 'projectfork', 'description' => 'Projectfork Menu');
$success = $menu_model->save($data);
$menu_id = $menu_model->getState('menu.id');
// Do not continue if menu creation failed
if (!$success || !$menu_id) {
    return false;
}
$mm_pos = 'position-7';
$mm_st = '1';
$module = JTable::getInstance('module');
$module->set('title', 'Projectfork');
$module->set('module', 'mod_menu');
$module->set('access', '1');
$module->set('showtitle', $mm_st);
 /**
  * Move item to new position
  *
  * @param: int $itemid
  * @param: int $parentid
  * @param: int $ordering
  *
  * @return: Save to database new position for menu item
  */
 public function moveItem($itemId, $parentid, $orders)
 {
     JSNFactory::import('components.com_menus.models.menu');
     $oldParentId = $this->getParentId($itemId);
     $menuInstance = new MenusModelMenu();
     $table = $menuInstance->getTable('Menu');
     if ($oldParentId != $parentid) {
         // Update parent id then rebuild menu table.
         $table->load($itemId);
         $table->setLocation($parentid, 'last-child');
         $table->store();
         $table->rebuildPath($table->id);
     }
     // Save items orders.
     $pks = $orders;
     $_order = array();
     for ($i = 1; $i <= count($orders); $i++) {
         $_order[] = $i;
     }
     $table->saveorder($pks, $_order);
     return true;
 }