public static function install_module($module_meta, $is_upgrade = FALSE)
 {
     // get the module xml to a temporary location
     $mod = cms_utils::get_module('ModuleManager');
     $xml_filename = modulerep_client::get_repository_xml($module_meta['filename'], $module_meta['size']);
     if (!$xml_filename) {
         return array(FALSE, $mod->Lang('error_downloadxml', $module_meta['filename']));
     }
     // get the md5sum of the data from the server.
     $server_md5 = modulerep_client::get_module_md5($module_meta['filename']);
     // verify the md5
     $dl_md5 = md5_file($xml_filename);
     if ($server_md5 != $dl_md5) {
         @unlink($xml_filename);
         return array(FALSE, $mod->Lang('error_checksum', array($server_md5, $dl_md5)));
     }
     // expand the xml
     $ops = cmsms()->GetModuleOperations();
     if (!$ops->ExpandXMLPackage($xml_filename, 1)) {
         debug_display('error:');
         die($ops->GetLastError());
         return array(FALSE, $ops->GetLastError());
     }
     @unlink($xml_filename);
     // update the database.
     ModuleOperations::get_instance()->QueueForInstall($module_meta['name']);
     return array(true, '');
 }