original_string: protected function execute_on($tmpdir) {
          global $CFG;
  
          // Default to last weeks time.
          $time = time() - ($CFG->tempdatafoldercleanup * 3600);
  
          $dir = new \RecursiveDirectoryIterator($tmpdir);
          // Show all child nodes prior to their parent.
          $iter = new \RecursiveIteratorIterator($dir, \RecursiveIteratorIterator::CHILD_FIRST);
  
          // An array of the full path (key) and date last modified.
          $modifieddateobject = array();
  
          // Get the time modified for each directory node. Nodes will be updated
          // once a file is deleted, so we need a list of the original values.
          for ($iter->rewind(); $iter->valid(); $iter->next()) {
              $node = $iter->getRealPath();
              if (!is_readable($node)) {
                  continue;
              }
              $modifieddateobject[$node] = $iter->getMTime();
          }
  
          // Now loop through again and remove old files and directories.
          for ($iter->rewind(); $iter->valid(); $iter->next()) {
              $node = $iter->getRealPath();
              if (!is_readable($node)) {
                  continue;
              }
  
              // Check if file or directory is older than the given time.
              if ($modifieddateobject[$node] < $time) {
                  if ($iter->isDir() && !$iter->isDot()) {
                      // Don't attempt to delete the directory if it isn't empty.
                      if (!glob($node. DIRECTORY_SEPARATOR . '*')) {
                          if (@rmdir($node) === false) {
                              mtrace("Failed removing directory '$node'.");
                          }
                      }
                  }
                  if ($iter->isFile()) {
                      if (@unlink($node) === false) {
                          mtrace("Failed removing file '$node'.");
                      }
                  }
              } else {
                  // Return the time modified to the original date only for real files.
                  if ($iter->isDir() && !$iter->isDot()) {
                      touch($node, $modifieddateobject[$node]);
                  }
              }
          }
      }
code: protected function execute_on($tmpdir) {
          global $CFG;
  
          // Default to last weeks time.
          $time = time() - ($CFG->tempdatafoldercleanup * 3600);
  
          $dir = new \RecursiveDirectoryIterator($tmpdir);
          // Show all child nodes prior to their parent.
          $iter = new \RecursiveIteratorIterator($dir, \RecursiveIteratorIterator::CHILD_FIRST);
  
          // An array of the full path (key) and date last modified.
          $modifieddateobject = array();
  
          // Get the time modified for each directory node. Nodes will be updated
          // once a file is deleted, so we need a list of the original values.
          for ($iter->rewind(); $iter->valid(); $iter->next()) {
              $node = $iter->getRealPath();
              if (!is_readable($node)) {
                  continue;
              }
              $modifieddateobject[$node] = $iter->getMTime();
          }
  
          // Now loop through again and remove old files and directories.
          for ($iter->rewind(); $iter->valid(); $iter->next()) {
              $node = $iter->getRealPath();
              if (!is_readable($node)) {
                  continue;
              }
  
              // Check if file or directory is older than the given time.
              if ($modifieddateobject[$node] < $time) {
                  if ($iter->isDir() && !$iter->isDot()) {
                      // Don't attempt to delete the directory if it isn't empty.
                      if (!glob($node. DIRECTORY_SEPARATOR . '*')) {
                          if (@rmdir($node) === false) {
                              mtrace("Failed removing directory '$node'.");
                          }
                      }
                  }
                  if ($iter->isFile()) {
                      if (@unlink($node) === false) {
                          mtrace("Failed removing file '$node'.");
                      }
                  }
              } else {
                  // Return the time modified to the original date only for real files.
                  if ($iter->isDir() && !$iter->isDot()) {
                      touch($node, $modifieddateobject[$node]);
                  }
              }
          }
      }
code_tokens: protected function execute_on ( $ tmpdir ) { global $ CFG ; // Default to last weeks time. $ time = time ( ) - ( $ CFG -> tempdatafoldercleanup * 3600 ) ; $ dir = new \ RecursiveDirectoryIterator ( $ tmpdir ) ; // Show all child nodes prior to their parent. $ iter = new \ RecursiveIteratorIterator ( $ dir , \ RecursiveIteratorIterator :: CHILD_FIRST ) ; // An array of the full path (key) and date last modified. $ modifieddateobject = array ( ) ; // Get the time modified for each directory node. Nodes will be updated // once a file is deleted, so we need a list of the original values. for ( $ iter -> rewind ( ) ; $ iter -> valid ( ) ; $ iter -> next ( ) ) { $ node = $ iter -> getRealPath ( ) ; if ( ! is_readable ( $ node ) ) { continue ; } $ modifieddateobject [ $ node ] = $ iter -> getMTime ( ) ; } // Now loop through again and remove old files and directories. for ( $ iter -> rewind ( ) ; $ iter -> valid ( ) ; $ iter -> next ( ) ) { $ node = $ iter -> getRealPath ( ) ; if ( ! is_readable ( $ node ) ) { continue ; } // Check if file or directory is older than the given time. if ( $ modifieddateobject [ $ node ] < $ time ) { if ( $ iter -> isDir ( ) && ! $ iter -> isDot ( ) ) { // Don't attempt to delete the directory if it isn't empty. if ( ! glob ( $ node . DIRECTORY_SEPARATOR . '*' ) ) { if ( @ rmdir ( $ node ) === false ) { mtrace ( "Failed removing directory '$node'." ) ; } } } if ( $ iter -> isFile ( ) ) { if ( @ unlink ( $ node ) === false ) { mtrace ( "Failed removing file '$node'." ) ; } } } else { // Return the time modified to the original date only for real files. if ( $ iter -> isDir ( ) && ! $ iter -> isDot ( ) ) { touch ( $ node , $ modifieddateobject [ $ node ] ) ; } } } }
docstring: Do the job, given the target directory.
  
  @param string $tmpdir The directory hosting the candidate stale temp files.
docstring_tokens: Do the job given the target directory .