Esempio n. 1
0
 /**
  *
  * @param unknown $column            
  * @param unknown $referenceTable            
  * @param unknown $referenceColumn            
  * @param unknown $update            
  * @param unknown $delete            
  */
 public function __construct($column, $referenceTable, $referenceColumn, $update, $delete)
 {
     // r = raiz
     // d = destino
     $nameReferenceTable = $referenceTable;
     if ($referenceTable instanceof TableIdentifier) {
         $nameReferenceTable = $referenceTable->getTable();
         $referenceTable = "{$referenceTable->getSchema()}.{$referenceTable->getTable()}";
     }
     $name = "{$nameReferenceTable}_r{$column}_d{$referenceColumn}_fkey";
     $this->setOnUpdateRule(strtoupper($update));
     $this->setOnDeleteRule(strtoupper($delete));
     parent::__construct($name, $column, $referenceTable, $referenceColumn);
 }
/**
 *
 *
 * @param unknown $model
 */
function air2_model_prevalidate(&$model)
{
    $table = $model->getTable();
    $col_defs = $table->getColumns();
    $now = air2_date();
    foreach ($col_defs as $col => $def) {
        if (preg_match('/_uuid$/', $col) && isset($def['unique']) && $def['unique']) {
            if (!isset($model->{$col}) || !strlen($model->{$col})) {
                $model->{$col} = air2_generate_uuid(12);
            }
        } elseif (preg_match('/_cre_dtim$/', $col)) {
            if (!$model->exists() && !strlen($model->{$col})) {
                $model->{$col} = $now;
            }
        } elseif (preg_match('/_upd_dtim$/', $col)) {
            $model->{$col} = $now;
        } elseif (preg_match('/_cre_user$/', $col)) {
            if (!$model->exists() && !strlen($model->{$col})) {
                if (defined('AIR2_REMOTE_USER_ID')) {
                    $model->{$col} = AIR2_REMOTE_USER_ID;
                } else {
                    $model->{$col} = 1;
                    //sysuser -- TODO: check for shell users
                }
            }
        } elseif (preg_match('/_upd_user$/', $col)) {
            if (defined('AIR2_REMOTE_USER_ID')) {
                $model->{$col} = AIR2_REMOTE_USER_ID;
            } else {
                $model->{$col} = 1;
                //sysuser -- TODO: check for shell users
            }
        } elseif ($def['type'] === 'timestamp') {
            // validate the string for non cre/upd timestamps
            if (isset($model->{$col}) && !is_null($model->{$col})) {
                //NOTE: whenever you set a column in Doctrine, it checks that
                //the value has changed.  Since '2010-01-01 01:01:01' is equal
                //to '2010-01-01T01:01:01', we need to NULL it first
                if (strpos($model->{$col}, 'T') !== false) {
                    $airformat = air2_date(strtotime($model->{$col}));
                    $model->{$col} = null;
                    $model->{$col} = $airformat;
                }
            }
        } elseif ($def['type'] === 'date') {
            // validate the string for non cre/upd timestamps
            if (isset($model->{$col}) && !is_null($model->{$col})) {
                //NOTE: whenever you set a column in Doctrine, it checks that
                //the value has changed.  Since '2010-01-01 01:01:01' is equal
                //to '2010-01-01T01:01:01', we need to NULL it first
                if (strpos($model->{$col}, 'T') !== false) {
                    $airformat = air2_date(strtotime($model->{$col}));
                    $model->{$col} = null;
                    $model->{$col} = $airformat;
                }
            }
        }
        // default values
        if (strlen($table->getDefaultValueOf($col)) && !strlen($model->{$col})) {
            $model->{$col} = $table->getDefaultValueOf($col);
        }
        // lastly, check strings for valid UTF8 chars
        if ($def['type'] === 'string' && !Encoding::is_utf8($model->{$col})) {
            $modelname = get_class($model);
            throw new Doctrine_Exception("non-UTF8 string found in {$modelname}->{$col}: " . $model->{$col});
        }
    }
}
Esempio n. 3
0
 /**
  * Query scope for filtering data by category Ids
  * @param unknown $model
  * @param string $values
  */
 public function byTag($model, $values = '')
 {
     if (!$values) {
         $values = $this->getValue();
     }
     $table = $model instanceof Model ? $model->getTable() : $model->getModel()->getTable();
     return $model->join('product_to_tag', function ($join) use($table, $values) {
         $join->on($table . '.id', '=', 'product_to_tag.product_pk_id');
         $join->whereIn('product_to_tag.product_tag_pk_id', $values);
     });
 }