Esempio n. 1
0
 public function __construct(Doctrine_Table $table, $fieldName)
 {
     $this->_table = $table;
     $columnList = $this->_table->getColumnNames();
     //Check if the identity and credential are one of the column names...
     if (!in_array($fieldName, $columnList)) {
         throw new Zend_Auth_Adapter_Exception("Invalid Column names are given as '{$fieldName}'");
     }
     $this->_fieldName = $fieldName;
 }
Esempio n. 2
0
 public function __construct(Doctrine_Table $table, $identityCol, $credentialCol)
 {
     $this->_table = $table;
     $columnList = $this->_table->getColumnNames();
     //Check if the identity and credential are one of the column names...
     if (!in_array($identityCol, $columnList) || !in_array($credentialCol, $columnList)) {
         throw new Zend_Auth_Adapter_Exception("Invalid Column names are given as '{$identityCol}' and '{$credentialCol}'");
     }
     $this->_credentialCol = $credentialCol;
     //Assign the column names...
     $this->_identityCol = $identityCol;
 }
Esempio n. 3
0
 public function parseClause($originalClause, $recursive = false)
 {
     $clause = $this->_tokenizer->bracketTrim($originalClause);
     $brackets = false;
     if ($clause !== $originalClause) {
         $brackets = true;
     }
     $foreignId = current(array_diff($this->_table->getColumnNames(), array('keyword', 'field', 'position')));
     $terms = $this->_tokenizer->sqlExplode($clause, ' OR ', '(', ')');
     $ret = array();
     if (count($terms) > 1) {
         $leavesOnly = true;
         foreach ($terms as $k => $term) {
             if ($this->isExpression($term)) {
                 $ret[$k] = $this->parseClause($term, true);
                 $leavesOnly = false;
             } else {
                 $ret[$k] = $this->parseTerm($term);
             }
         }
         $return = implode(' OR ', $ret);
         if ($leavesOnly && $recursive) {
             $return = sprintf($this->_condition, 'IN') . $return . ')';
             $brackets = false;
         }
     } else {
         $terms = $this->_tokenizer->sqlExplode($clause, ' ', '(', ')');
         if (count($terms) === 1 && !$recursive) {
             $return = $this->parseTerm($clause);
         } else {
             foreach ($terms as $k => $term) {
                 $term = trim($term);
                 if ($term === 'AND') {
                     continue;
                 }
                 if (substr($term, 0, 1) === '-') {
                     $operator = 'NOT IN';
                     $term = substr($term, 1);
                 } else {
                     $operator = 'IN';
                 }
                 if ($this->isExpression($term)) {
                     $ret[$k] = $this->parseClause($term, true);
                 } else {
                     $ret[$k] = sprintf($this->_condition, $operator) . $this->parseTerm($term) . ')';
                 }
             }
             $return = implode(' AND ', $ret);
         }
     }
     if ($brackets) {
         return '(' . $return . ')';
     } else {
         return $return;
     }
 }