Name

global.RecursionTester

Description

No description available

Script

gs.include("PrototypeServer");

var RecursionTester = Class.create();

RecursionTester.prototype = {
initialize : function(table, field, targetField) {
  this.table = table;
  this.field = field; 
  if (targetField)
      this.targetField = targetField;
  else
      this.targetField = "sys_id";
},

isRecursive : function(/* GlideRecord */ gr) {
  if (gr[this.field].nil())
    return false; // no parent/target no recursion

  if (gr[this.field] == gr[this.targetField])
    return true; // cannot be your own parent/target

  this.abv = new Object();
  this.abv[gr[this.targetField] + ''] = true;
  if (!this._walkTree(gr[this.targetField]))
    return true;

  if (this.abv[current[this.field] + ''])
    return true;

  return false;
},

_walkTree : function(/* GlideElement */ p) {
  var gr = new GlideRecord(this.table);
  gr.addQuery(this.field, p);
  gr.query();
  while (gr.next()) {
      var child_id = gr[this.targetField] + '';
      if (this.abv[child_id])
          return false;

      this.abv[gr[this.targetField] + ''] = true;
      if (!this._walkTree(gr[this.targetField]))
          return false;
  }
  return true;
}
}

Sys ID

b791a62e0a0a0b1200f3078481aaee5d

Offical Documentation

Official Docs: