original_string: protected static function build_paths($force) {
          global $DB;
  
          if ($force or $DB->record_exists_select('context', "contextlevel = ".CONTEXT_BLOCK." AND (depth = 0 OR path IS NULL)")) {
              if ($force) {
                  $ctxemptyclause = '';
              } else {
                  $ctxemptyclause = "AND (ctx.path IS NULL OR ctx.depth = 0)";
              }
  
              // pctx.path IS NOT NULL prevents fatal problems with broken block instances that point to invalid context parent
              $sql = "INSERT INTO {context_temp} (id, path, depth, locked)
                      SELECT ctx.id, ".$DB->sql_concat('pctx.path', "'/'", 'ctx.id').", pctx.depth+1, ctx.locked
                        FROM {context} ctx
                        JOIN {block_instances} bi ON (bi.id = ctx.instanceid AND ctx.contextlevel = ".CONTEXT_BLOCK.")
                        JOIN {context} pctx ON (pctx.id = bi.parentcontextid)
                       WHERE (pctx.path IS NOT NULL AND pctx.depth > 0)
                             $ctxemptyclause";
              $trans = $DB->start_delegated_transaction();
              $DB->delete_records('context_temp');
              $DB->execute($sql);
              context::merge_context_temp_table();
              $DB->delete_records('context_temp');
              $trans->allow_commit();
          }
      }
code: protected static function build_paths($force) {
          global $DB;
  
          if ($force or $DB->record_exists_select('context', "contextlevel = ".CONTEXT_BLOCK." AND (depth = 0 OR path IS NULL)")) {
              if ($force) {
                  $ctxemptyclause = '';
              } else {
                  $ctxemptyclause = "AND (ctx.path IS NULL OR ctx.depth = 0)";
              }
  
              // pctx.path IS NOT NULL prevents fatal problems with broken block instances that point to invalid context parent
              $sql = "INSERT INTO {context_temp} (id, path, depth, locked)
                      SELECT ctx.id, ".$DB->sql_concat('pctx.path', "'/'", 'ctx.id').", pctx.depth+1, ctx.locked
                        FROM {context} ctx
                        JOIN {block_instances} bi ON (bi.id = ctx.instanceid AND ctx.contextlevel = ".CONTEXT_BLOCK.")
                        JOIN {context} pctx ON (pctx.id = bi.parentcontextid)
                       WHERE (pctx.path IS NOT NULL AND pctx.depth > 0)
                             $ctxemptyclause";
              $trans = $DB->start_delegated_transaction();
              $DB->delete_records('context_temp');
              $DB->execute($sql);
              context::merge_context_temp_table();
              $DB->delete_records('context_temp');
              $trans->allow_commit();
          }
      }
code_tokens: protected static function build_paths ( $ force ) { global $ DB ; if ( $ force or $ DB -> record_exists_select ( 'context' , "contextlevel = " . CONTEXT_BLOCK . " AND (depth = 0 OR path IS NULL)" ) ) { if ( $ force ) { $ ctxemptyclause = '' ; } else { $ ctxemptyclause = "AND (ctx.path IS NULL OR ctx.depth = 0)" ; } // pctx.path IS NOT NULL prevents fatal problems with broken block instances that point to invalid context parent $ sql = "INSERT INTO {context_temp} (id, path, depth, locked)
                      SELECT ctx.id, " . $ DB -> sql_concat ( 'pctx.path' , "'/'" , 'ctx.id' ) . ", pctx.depth+1, ctx.locked
                        FROM {context} ctx
                        JOIN {block_instances} bi ON (bi.id = ctx.instanceid AND ctx.contextlevel = " . CONTEXT_BLOCK . ")
                        JOIN {context} pctx ON (pctx.id = bi.parentcontextid)
                       WHERE (pctx.path IS NOT NULL AND pctx.depth > 0)
                             $ctxemptyclause" ; $ trans = $ DB -> start_delegated_transaction ( ) ; $ DB -> delete_records ( 'context_temp' ) ; $ DB -> execute ( $ sql ) ; context :: merge_context_temp_table ( ) ; $ DB -> delete_records ( 'context_temp' ) ; $ trans -> allow_commit ( ) ; } }
docstring: Rebuild context paths and depths at block context level.
  
  @static
  @param bool $force
docstring_tokens: Rebuild context paths and depths at block context level .