Helix Installation   Getting Started   Reference Documentation   Global Functions   Quick Start
ModulesClassesFunctions
 

Class Reference

class db_column extends obj

Hide Inherited MembersHelix Core
Description
No description.
 
Constants
No constants.
 
Properties
public_default[ db_column ]
protected_dirty[ obj ]
public_extra[ db_column ]
public_field[ db_column ]
public_in_relationship[ db_column ]
public_is_boolean[ db_column ]
public_key[ db_column ]
public_null[ db_column ]
publicproperty_objects_array[ obj ]
public_referenced_column_name[ db_column ]
public_referenced_table_name[ db_column ]
public_referenced_table_schema[ db_column ]
public_type[ db_column ]
 
Methods
public__construct ( tablename , columnname , dbname ["h266209_helix"] )[ db_column ]
Parameters
requiredtablename
requiredcolumnname
optionaldbname ["h266209_helix"]
Code
016  public function __construct($__tablename, $__columnname, $__dbname=DB_NAME)
017  {
018      $db = new db;
019     
020      $tp = explode("_",$__tablename);
021      if (count($tp)==3 && !preg_match('/_(ext|cus|type)$/i',$__tablename))
022      {
023          $this->in_relationship = true;
024      }
025      else
026      {
027          $this->in_relationship = false;
028      }
029     
030      $q = "SHOW COLUMNS FROM $__tablename FROM $__dbname where `field`='$__columnname'";
031      $db->query($q);       
032      if ($db->next_record() && $db->num_rows() == 1)
033      {
034          $this->_field=$db->f("Field");
035          $this->_type=$db->f("Type");
036          $this->_null=$db->f("Null");
037          $this->_key=$db->f("Key");
038          $this->_default=$db->f("Default");
039          $this->_extra=$db->f("Extra");
040      }
041     
042      $q = "SELECT * from information_schema.KEY_COLUMN_USAGE";
043      $q .= " WHERE TABLE_SCHEMA='$__dbname'";
044      $q .= " AND TABLE_NAME='$__tablename'";
045      $q .= " AND COLUMN_NAME='$__columnname'";
046      $q .= " AND REFERENCED_TABLE_NAME IS NOT NULL";
047     
048      $db->query($q);       
049      if ($db->next_record() && $db->num_rows() == 1)
050      {
051          $this->_referenced_table_schema=$db->f("REFERENCED_TABLE_SCHEMA");
052          $this->_referenced_table_name=$db->f("REFERENCED_TABLE_NAME");
053          $this->_referenced_column_name=$db->f("REFERENCED_COLUMN_NAME");
054      }
055     
056      $this->_is_boolean = preg_match('/tinyint\(1\)/i',$this->_type) ? true : false;
057  }
public__get ( p )[ obj ]
Parameters
requiredp
Code
007  public function __get($p)
008  {
009      $methods = get_class_methods($this);
010      $properties = get_object_vars($this);
011      if (in_array("get_$p",$methods))
012      {
013          return $this->{"get_$p"}();
014      }
015      else if (array_key_exists("_$p",$properties))
016      {
017          return $this->{"_$p"};
018      }
019      else if (in_array("get_" . substr($p,strpos($p,"_")+1), $methods))
020      {
021          return $this->{"get_" . substr($p,strpos($p,"_")+1)}(substr($p,0,strpos($p,"_")));
022      }
023      else
024      {
025          trigger_error("This object [" . get_class($this) . ":$this->id] has no private property '_$p' for the requested public property '$p'",E_USER_WARNING);
026          return null;
027      }
028  }
publicget_array ( )[ obj ]
Parameters
No parameters for this method
Code
096  public function get_array()
097  {
098      return get_object_vars($this);
099  }
publicget_classname ( )[ obj ]
Parameters
No parameters for this method
Code
086  public function get_classname()
087  {
088      return get_class($this);
089  }
publicget_dirty ( )[ obj ]
Parameters
No parameters for this method
Code
063  public function get_dirty()
064  {
065      if ($this->id === 0)
066      {
067          $this->_dirty = true;
068      }
069      else
070      {
071          foreach (get_object_vars($this) as $k=>$v)
072          {
073              if ($this->_dirty)
074              {
075                  break;
076              }
077              if (preg_match('/_dirty$/',$k))
078              {
079                  $this->_dirty = $this->_dirty || $v;
080              }
081          }
082      }
083      return $this->_dirty;
084  }
publicget_is_primary ( )[ db_column ]
Parameters
No parameters for this method
Code
077  public function get_is_primary()
078  {
079      return ($this->key==="PRI");
080  }
publicget_is_unique ( )[ db_column ]
Parameters
No parameters for this method
Code
082  public function get_is_unique()
083  {
084      return ($this->key==="UNI");
085  }
publicget_json ( )[ obj ]
Parameters
No parameters for this method
Code
101  public function get_json()
102  {
103      $class = new ReflectionClass($this->classname);
104      $methods = $class->getMethods();
105      usort($methods,"sort_reflection_objects");
106      $accessors = array();
107      foreach ($methods as $index=>$method)
108      {
109          $declarer = $method->getDeclaringClass()->name;
110          if (preg_match('/^(get|set|)_(.+)$/',$method->name,$matches))
111          {
112              $accessor = $matches[2];
113              $getset = $matches[1];
114              eval("\$accessors[\$accessor] = \$this->".$accessor.";");
115          }
116      }
117      //return json_encode($this->get_array());
118      return json_encode($accessors);
119  }
publicget_mssql_create_string ( )[ db_column ]
Parameters
No parameters for this method
Code
087  public function get_mssql_create_string()
088  {
089      /*
090       id int IDENTITY(1,1) NOT NULL,
091        "name" text,
092        description text,
093        mdate datetime DEFAULT NULL,
094        cdate datetime DEFAULT NULL,
095        deleted tinyint DEFAULT '0' -- ,
096        -- PRIMARY KEY (id)*/
097      $type = $this->type;
098      $type = (stristr($type,"tinyint"))?"tinyint":$type; //drop widths off the tinyints
099      $type = (stristr($type,"int"))?"int":$type; //drop widths off the ints
100      $type = (stristr($type,"bit"))?"tinyint":$type; //drop widths off the ints
101      $type = ($type=="date")?"smalldatetime":$type;
102      $type = ($type=="time")?"smalldatetime":$type;
103      /*$type = ($type=="mediumtext")?"text":$type;
104      $type = ($type=="longtext")?"text":$type;*/
105      $type = (stristr($type,"text"))?"varchar(2048)":$type; //convert any text fields to varchar
106      //this crappy, but '=' doesn't work on text in mssql
107      //Yes, this may truncate some data, we know, we know
108     
109      $create_string = "[".$this->field."] " .$type;
110     
111      if(stristr($this->extra,"auto_increment"))
112      {
113          $create_string .= " IDENTITY(1,1) ";
114      }
115      if(!is_null($this->default))
116      {
117          $create_string .= " DEFAULT " . $this->default;
118      }
119      if($this->null==="NO")
120      {
121          $create_string .= " NOT NULL";
122      }
123      return $create_string;
124  }
publicget_nice_name ( )[ db_column ]
Parameters
No parameters for this method
Code
059  public function get_nice_name()
060  {
061      if (preg_match('/^(parent|child)_/i',$this->field))
062      {
063          return preg_replace('/_[a-z]+_id$/i','',$this->field) . "_id";
064      }
065      else if ($this->in_relationship && $this->is_primary && $this->field!="id")
066      {
067          $tmp = explode("_",$this->referenced_table_name);
068          array_shift($tmp);
069          return implode("_",$tmp) . "_id";
070      }
071      else
072      {
073          return $this->field;
074      }
075  }
publicget_properties ( )[ obj ]
Parameters
No parameters for this method
Code
121  public function get_properties()
122  {
123      return array_keys($this->array);
124  }
protectedget_string ( )[ obj ]
Parameters
No parameters for this method
Code
091  protected function get_string()
092  {
093      return method_exists($this,"__toString") ? $this->__toString() : null;
094  }
public__set ( p , v )[ obj ]
Parameters
requiredp
requiredv
Code
030  public function __set($p,$v)
031  {
032      $methods = get_class_methods($this);
033      $properties = get_object_vars($this);
034      if (in_array("set_$p",$methods))
035      {
036          $this->{"set_$p"}($v);
037      }
038      else if (array_key_exists("_$p",$properties))
039      {
040          if (!preg_match('/_dirty$/',$p) && property_exists($this,"_{$p}_dirty"))
041          {
042              if (is_object($this->{"_$p"}))
043              {
044                  $this->{"_$p"}->dirty = true;
045              }
046              else
047              {
048                  $this->{"_{$p}_dirty"} = $this->{$p}==$v ? false : true;
049              }
050          }
051          $this->{"_$p"} = $v;
052      }
053      else if (in_array("set_" . substr($p,strpos($p,"_")+1), $methods))
054      {
055          $this->{"set_" . substr($p,strpos($p,"_")+1)}($v,substr($p,0,strpos($p,"_")));
056      }
057      else
058      {
059          trigger_error("This object [" . get_class($this) . ":$this->id] has no private property '_$p' for the requested public property '$p'",E_USER_WARNING);
060      }
061  }
public__toString ( )[ db_column ]
Parameters
No parameters for this method
Code
126  public function __toString()
127  {
128      return $this->_field;
129  }
 
Accessors
publicarray[ obj ]
Code
096  public function get_array()
097  {
098      return get_object_vars($this);
099  }
publicclassname[ obj ]
Code
086  public function get_classname()
087  {
088      return get_class($this);
089  }
publicdirty[ obj ]
Code
063  public function get_dirty()
064  {
065      if ($this->id === 0)
066      {
067          $this->_dirty = true;
068      }
069      else
070      {
071          foreach (get_object_vars($this) as $k=>$v)
072          {
073              if ($this->_dirty)
074              {
075                  break;
076              }
077              if (preg_match('/_dirty$/',$k))
078              {
079                  $this->_dirty = $this->_dirty || $v;
080              }
081          }
082      }
083      return $this->_dirty;
084  }
publicis_primary[ db_column ]
Code
077  public function get_is_primary()
078  {
079      return ($this->key==="PRI");
080  }
publicis_unique[ db_column ]
Code
082  public function get_is_unique()
083  {
084      return ($this->key==="UNI");
085  }
publicjson[ obj ]
Code
101  public function get_json()
102  {
103      $class = new ReflectionClass($this->classname);
104      $methods = $class->getMethods();
105      usort($methods,"sort_reflection_objects");
106      $accessors = array();
107      foreach ($methods as $index=>$method)
108      {
109          $declarer = $method->getDeclaringClass()->name;
110          if (preg_match('/^(get|set|)_(.+)$/',$method->name,$matches))
111          {
112              $accessor = $matches[2];
113              $getset = $matches[1];
114              eval("\$accessors[\$accessor] = \$this->".$accessor.";");
115          }
116      }
117      //return json_encode($this->get_array());
118      return json_encode($accessors);
119  }
publicmssql_create_string[ db_column ]
Code
087  public function get_mssql_create_string()
088  {
089      /*
090       id int IDENTITY(1,1) NOT NULL,
091        "name" text,
092        description text,
093        mdate datetime DEFAULT NULL,
094        cdate datetime DEFAULT NULL,
095        deleted tinyint DEFAULT '0' -- ,
096        -- PRIMARY KEY (id)*/
097      $type = $this->type;
098      $type = (stristr($type,"tinyint"))?"tinyint":$type; //drop widths off the tinyints
099      $type = (stristr($type,"int"))?"int":$type; //drop widths off the ints
100      $type = (stristr($type,"bit"))?"tinyint":$type; //drop widths off the ints
101      $type = ($type=="date")?"smalldatetime":$type;
102      $type = ($type=="time")?"smalldatetime":$type;
103      /*$type = ($type=="mediumtext")?"text":$type;
104      $type = ($type=="longtext")?"text":$type;*/
105      $type = (stristr($type,"text"))?"varchar(2048)":$type; //convert any text fields to varchar
106      //this crappy, but '=' doesn't work on text in mssql
107      //Yes, this may truncate some data, we know, we know
108     
109      $create_string = "[".$this->field."] " .$type;
110     
111      if(stristr($this->extra,"auto_increment"))
112      {
113          $create_string .= " IDENTITY(1,1) ";
114      }
115      if(!is_null($this->default))
116      {
117          $create_string .= " DEFAULT " . $this->default;
118      }
119      if($this->null==="NO")
120      {
121          $create_string .= " NOT NULL";
122      }
123      return $create_string;
124  }
publicnice_name[ db_column ]
Code
059  public function get_nice_name()
060  {
061      if (preg_match('/^(parent|child)_/i',$this->field))
062      {
063          return preg_replace('/_[a-z]+_id$/i','',$this->field) . "_id";
064      }
065      else if ($this->in_relationship && $this->is_primary && $this->field!="id")
066      {
067          $tmp = explode("_",$this->referenced_table_name);
068          array_shift($tmp);
069          return implode("_",$tmp) . "_id";
070      }
071      else
072      {
073          return $this->field;
074      }
075  }
publicproperties[ obj ]
Code
121  public function get_properties()
122  {
123      return array_keys($this->array);
124  }
publicstring[ obj ]
Code
091  protected function get_string()
092  {
093      return method_exists($this,"__toString") ? $this->__toString() : null;
094  }
Get Helix PHP Framework at SourceForge.net. Fast, secure and Free Open Source software downloads