/**
  * First, creates a new Tracker Object by importing its structure from an XML file,
  * then, imports it into the Database, before verifying the consistency
  *
  * @param string         $xml_element        the location of the imported file
  * @param int            $groupId        the Id of the project to create the tracker
  * @param string         $name           the name of the tracker (label)
  * @param string         $description    the description of the tracker
  * @param string         $itemname       the short name of the tracker
  *
  * @throws TrackerFromXmlException
  * @return the new Tracker, or null if error
  */
 public function createFromXML(SimpleXMLElement $xml_element, $groupId, $name, $description, $itemname)
 {
     $tracker = null;
     if ($this->tracker_factory->validMandatoryInfoOnCreate($name, $description, $itemname, $groupId)) {
         $this->rng_validator->validate($xml_element, realpath(dirname(TRACKER_BASE_DIR) . '/www/resources/tracker.rng'));
         $tracker = $this->getInstanceFromXML($xml_element, $groupId, $name, $description, $itemname);
         //Testing consistency of the imported tracker before updating database
         if ($tracker->testImport()) {
             if ($tracker_id = $this->tracker_factory->saveObject($tracker)) {
                 $tracker->setId($tracker_id);
             } else {
                 throw new TrackerFromXmlException($GLOBALS['Language']->getText('plugin_tracker_admin', 'error_during_creation'));
             }
         } else {
             throw new TrackerFromXmlException('XML file cannot be imported');
         }
     }
     $this->formelement_factory->clearCaches();
     $this->tracker_factory->clearCaches();
     return $tracker;
 }