original_string: public function update_all_installed_languages() {
          global $CFG;
  
          if (!$availablelangs = $this->installer->get_remote_list_of_languages()) {
              $this->errors[] = get_string('cannotdownloadlanguageupdatelist', 'error');
              return false;
          }
  
          $md5array = array();    // Convert to (string)langcode => (string)md5.
          foreach ($availablelangs as $alang) {
              $md5array[$alang[0]] = $alang[1];
          }
  
          // Filter out unofficial packs.
          $currentlangs = array_keys(get_string_manager()->get_list_of_translations(true));
          $updateablelangs = array();
          foreach ($currentlangs as $clang) {
              if (!array_key_exists($clang, $md5array)) {
                  $this->info[] = get_string('langpackupdateskipped', 'tool_langimport', $clang);
                  continue;
              }
              $dest1 = $CFG->dataroot.'/lang/'.$clang;
              $dest2 = $CFG->dirroot.'/lang/'.$clang;
  
              if (file_exists($dest1.'/langconfig.php') || file_exists($dest2.'/langconfig.php')) {
                  $updateablelangs[] = $clang;
              }
          }
  
          // Filter out packs that have the same md5 key.
          $neededlangs = array();
          foreach ($updateablelangs as $ulang) {
              if (!$this->is_installed_lang($ulang, $md5array[$ulang])) {
                  $neededlangs[] = $ulang;
              }
          }
  
          try {
              $updated = $this->install_languagepacks($neededlangs, true);
          } catch (\moodle_exception $e) {
              $this->errors[] = 'An exception occurred while installing language packs: ' . $e->getMessage();
              return false;
          }
  
          if ($updated) {
              $this->info[] = get_string('langupdatecomplete', 'tool_langimport');
              // The strings have been changed so we need to purge their cache to ensure users see the changes.
              get_string_manager()->reset_caches();
          } else {
              $this->info[] = get_string('nolangupdateneeded', 'tool_langimport');
          }
  
          return true;
      }
code: public function update_all_installed_languages() {
          global $CFG;
  
          if (!$availablelangs = $this->installer->get_remote_list_of_languages()) {
              $this->errors[] = get_string('cannotdownloadlanguageupdatelist', 'error');
              return false;
          }
  
          $md5array = array();    // Convert to (string)langcode => (string)md5.
          foreach ($availablelangs as $alang) {
              $md5array[$alang[0]] = $alang[1];
          }
  
          // Filter out unofficial packs.
          $currentlangs = array_keys(get_string_manager()->get_list_of_translations(true));
          $updateablelangs = array();
          foreach ($currentlangs as $clang) {
              if (!array_key_exists($clang, $md5array)) {
                  $this->info[] = get_string('langpackupdateskipped', 'tool_langimport', $clang);
                  continue;
              }
              $dest1 = $CFG->dataroot.'/lang/'.$clang;
              $dest2 = $CFG->dirroot.'/lang/'.$clang;
  
              if (file_exists($dest1.'/langconfig.php') || file_exists($dest2.'/langconfig.php')) {
                  $updateablelangs[] = $clang;
              }
          }
  
          // Filter out packs that have the same md5 key.
          $neededlangs = array();
          foreach ($updateablelangs as $ulang) {
              if (!$this->is_installed_lang($ulang, $md5array[$ulang])) {
                  $neededlangs[] = $ulang;
              }
          }
  
          try {
              $updated = $this->install_languagepacks($neededlangs, true);
          } catch (\moodle_exception $e) {
              $this->errors[] = 'An exception occurred while installing language packs: ' . $e->getMessage();
              return false;
          }
  
          if ($updated) {
              $this->info[] = get_string('langupdatecomplete', 'tool_langimport');
              // The strings have been changed so we need to purge their cache to ensure users see the changes.
              get_string_manager()->reset_caches();
          } else {
              $this->info[] = get_string('nolangupdateneeded', 'tool_langimport');
          }
  
          return true;
      }
code_tokens: public function update_all_installed_languages ( ) { global $ CFG ; if ( ! $ availablelangs = $ this -> installer -> get_remote_list_of_languages ( ) ) { $ this -> errors [ ] = get_string ( 'cannotdownloadlanguageupdatelist' , 'error' ) ; return false ; } $ md5array = array ( ) ; // Convert to (string)langcode => (string)md5. foreach ( $ availablelangs as $ alang ) { $ md5array [ $ alang [ 0 ] ] = $ alang [ 1 ] ; } // Filter out unofficial packs. $ currentlangs = array_keys ( get_string_manager ( ) -> get_list_of_translations ( true ) ) ; $ updateablelangs = array ( ) ; foreach ( $ currentlangs as $ clang ) { if ( ! array_key_exists ( $ clang , $ md5array ) ) { $ this -> info [ ] = get_string ( 'langpackupdateskipped' , 'tool_langimport' , $ clang ) ; continue ; } $ dest1 = $ CFG -> dataroot . '/lang/' . $ clang ; $ dest2 = $ CFG -> dirroot . '/lang/' . $ clang ; if ( file_exists ( $ dest1 . '/langconfig.php' ) || file_exists ( $ dest2 . '/langconfig.php' ) ) { $ updateablelangs [ ] = $ clang ; } } // Filter out packs that have the same md5 key. $ neededlangs = array ( ) ; foreach ( $ updateablelangs as $ ulang ) { if ( ! $ this -> is_installed_lang ( $ ulang , $ md5array [ $ ulang ] ) ) { $ neededlangs [ ] = $ ulang ; } } try { $ updated = $ this -> install_languagepacks ( $ neededlangs , true ) ; } catch ( \ moodle_exception $ e ) { $ this -> errors [ ] = 'An exception occurred while installing language packs: ' . $ e -> getMessage ( ) ; return false ; } if ( $ updated ) { $ this -> info [ ] = get_string ( 'langupdatecomplete' , 'tool_langimport' ) ; // The strings have been changed so we need to purge their cache to ensure users see the changes. get_string_manager ( ) -> reset_caches ( ) ; } else { $ this -> info [ ] = get_string ( 'nolangupdateneeded' , 'tool_langimport' ) ; } return true ; }
docstring: Updated all install language packs with the latest found on servre
  
  @return bool true if languages succesfully updated.
docstring_tokens: Updated all install language packs with the latest found on servre