function load(&$xml_desc)
 {
     $attributes = $xml_desc->attributes();
     $name = Application::_get_attribute($xml_desc, 'name');
     $this->name = !empty($name) ? $name : $this->id;
     $this->language = Application::_get_attribute($xml_desc, 'language');
     $language = Application::_get_attribute($xml_desc, 'localized_language');
     $this->localized_language = !empty($language) ? $language : $this->language;
     $this->version = Application::_get_attribute($xml_desc, 'num');
     $this->compatibility_min = Application::_get_attribute($xml_desc, 'min', 'compatibility');
     $this->compatibility_max = Application::_get_attribute($xml_desc, 'max', 'compatibility');
     $pubdate = Application::_get_attribute($xml_desc, 'pubdate');
     if (!empty($pubdate)) {
         $this->pubdate = new Date(DATE_FROM_STRING, TIMEZONE_SYSTEM, $pubdate, 'y/m/d');
     } else {
         $this->pubdate = new Date();
     }
     $this->security_update = Application::_get_attribute($xml_desc, 'security-update');
     $this->security_update = strtolower($this->security_update) == 'true' ? true : false;
     $this->priority = Application::_get_attribute($xml_desc, 'priority');
     switch ($this->priority) {
         case 'high':
             $this->priority = ADMIN_ALERT_HIGH_PRIORITY;
             break;
         case 'medium':
             $this->priority = ADMIN_ALERT_MEDIUM_PRIORITY;
             break;
         default:
             $this->priority = ADMIN_ALERT_LOW_PRIORITY;
             break;
     }
     if ($this->security_update) {
         $this->priority++;
     }
     $this->download_url = Application::_get_attribute($xml_desc, 'url', '//download');
     $this->update_url = Application::_get_attribute($xml_desc, 'url', '//update');
     $this->authors = array();
     $authors_elts = $xml_desc->xpath('authors/author');
     foreach ($authors_elts as $author) {
         $this->authors[] = array('name' => Application::_get_attribute($author, 'name'), 'email' => Application::_get_attribute($author, 'email'));
     }
     $this->description = $xml_desc->xpath('description');
     $this->description = utf8_decode((string) $this->description[0]);
     $this->new_features = array();
     $this->improvments = array();
     $this->bug_corrections = array();
     $this->security_improvments = array();
     $novelties = $xml_desc->xpath('whatsnew/new');
     foreach ($novelties as $novelty) {
         $attributes = $novelty->attributes();
         $type = isset($attributes['type']) ? $attributes['type'] : 'feature';
         switch ($type) {
             case 'improvment':
                 $this->improvments[] = utf8_decode((string) $novelty);
                 break;
             case 'bug':
                 $this->bug_corrections[] = utf8_decode((string) $novelty);
                 break;
             case 'security':
                 $this->security_improvments[] = utf8_decode((string) $novelty);
                 break;
             default:
                 $this->new_features[] = utf8_decode((string) $novelty);
                 break;
         }
     }
     $this->warning_level = Application::_get_attribute($xml_desc, 'level', 'warning');
     if (!empty($this->warning_level)) {
         $this->warning = $xml_desc->xpath('warning');
         $this->warning = utf8_decode((string) $this->warning[0]);
     }
 }