original_string: protected function where_clause($table, array $conditions=null) {
          // We accept nulls in conditions
          $conditions = is_null($conditions) ? array() : $conditions;
  
          if (empty($conditions)) {
              return array('', array());
          }
  
          // Some checks performed under debugging only
          if (debugging()) {
              $columns = $this->get_columns($table);
              if (empty($columns)) {
                  // no supported columns means most probably table does not exist
                  throw new dml_exception('ddltablenotexist', $table);
              }
              foreach ($conditions as $key=>$value) {
                  if (!isset($columns[$key])) {
                      $a = new stdClass();
                      $a->fieldname = $key;
                      $a->tablename = $table;
                      throw new dml_exception('ddlfieldnotexist', $a);
                  }
                  $column = $columns[$key];
                  if ($column->meta_type == 'X') {
                      //ok so the column is a text column. sorry no text columns in the where clause conditions
                      throw new dml_exception('textconditionsnotallowed', $conditions);
                  }
              }
          }
  
          $allowed_types = $this->allowed_param_types();
          $where = array();
          $params = array();
  
          foreach ($conditions as $key=>$value) {
              if (is_int($key)) {
                  throw new dml_exception('invalidnumkey');
              }
              if (is_null($value)) {
                  $where[] = "$key IS NULL";
              } else {
                  if ($allowed_types & SQL_PARAMS_NAMED) {
                      // Need to verify key names because they can contain, originally,
                      // spaces and other forbidden chars when using sql_xxx() functions and friends.
                      $normkey = trim(preg_replace('/[^a-zA-Z0-9_-]/', '_', $key), '-_');
                      if ($normkey !== $key) {
                          debugging('Invalid key found in the conditions array.');
                      }
                      $where[] = "$key = :$normkey";
                      $params[$normkey] = $value;
                  } else {
                      $where[] = "$key = ?";
                      $params[] = $value;
                  }
              }
          }
          $where = implode(" AND ", $where);
          return array($where, $params);
      }
code: protected function where_clause($table, array $conditions=null) {
          // We accept nulls in conditions
          $conditions = is_null($conditions) ? array() : $conditions;
  
          if (empty($conditions)) {
              return array('', array());
          }
  
          // Some checks performed under debugging only
          if (debugging()) {
              $columns = $this->get_columns($table);
              if (empty($columns)) {
                  // no supported columns means most probably table does not exist
                  throw new dml_exception('ddltablenotexist', $table);
              }
              foreach ($conditions as $key=>$value) {
                  if (!isset($columns[$key])) {
                      $a = new stdClass();
                      $a->fieldname = $key;
                      $a->tablename = $table;
                      throw new dml_exception('ddlfieldnotexist', $a);
                  }
                  $column = $columns[$key];
                  if ($column->meta_type == 'X') {
                      //ok so the column is a text column. sorry no text columns in the where clause conditions
                      throw new dml_exception('textconditionsnotallowed', $conditions);
                  }
              }
          }
  
          $allowed_types = $this->allowed_param_types();
          $where = array();
          $params = array();
  
          foreach ($conditions as $key=>$value) {
              if (is_int($key)) {
                  throw new dml_exception('invalidnumkey');
              }
              if (is_null($value)) {
                  $where[] = "$key IS NULL";
              } else {
                  if ($allowed_types & SQL_PARAMS_NAMED) {
                      // Need to verify key names because they can contain, originally,
                      // spaces and other forbidden chars when using sql_xxx() functions and friends.
                      $normkey = trim(preg_replace('/[^a-zA-Z0-9_-]/', '_', $key), '-_');
                      if ($normkey !== $key) {
                          debugging('Invalid key found in the conditions array.');
                      }
                      $where[] = "$key = :$normkey";
                      $params[$normkey] = $value;
                  } else {
                      $where[] = "$key = ?";
                      $params[] = $value;
                  }
              }
          }
          $where = implode(" AND ", $where);
          return array($where, $params);
      }
code_tokens: protected function where_clause ( $ table , array $ conditions = null ) { // We accept nulls in conditions $ conditions = is_null ( $ conditions ) ? array ( ) : $ conditions ; if ( empty ( $ conditions ) ) { return array ( '' , array ( ) ) ; } // Some checks performed under debugging only if ( debugging ( ) ) { $ columns = $ this -> get_columns ( $ table ) ; if ( empty ( $ columns ) ) { // no supported columns means most probably table does not exist throw new dml_exception ( 'ddltablenotexist' , $ table ) ; } foreach ( $ conditions as $ key => $ value ) { if ( ! isset ( $ columns [ $ key ] ) ) { $ a = new stdClass ( ) ; $ a -> fieldname = $ key ; $ a -> tablename = $ table ; throw new dml_exception ( 'ddlfieldnotexist' , $ a ) ; } $ column = $ columns [ $ key ] ; if ( $ column -> meta_type == 'X' ) { //ok so the column is a text column. sorry no text columns in the where clause conditions throw new dml_exception ( 'textconditionsnotallowed' , $ conditions ) ; } } } $ allowed_types = $ this -> allowed_param_types ( ) ; $ where = array ( ) ; $ params = array ( ) ; foreach ( $ conditions as $ key => $ value ) { if ( is_int ( $ key ) ) { throw new dml_exception ( 'invalidnumkey' ) ; } if ( is_null ( $ value ) ) { $ where [ ] = "$key IS NULL" ; } else { if ( $ allowed_types & SQL_PARAMS_NAMED ) { // Need to verify key names because they can contain, originally, // spaces and other forbidden chars when using sql_xxx() functions and friends. $ normkey = trim ( preg_replace ( '/[^a-zA-Z0-9_-]/' , '_' , $ key ) , '-_' ) ; if ( $ normkey !== $ key ) { debugging ( 'Invalid key found in the conditions array.' ) ; } $ where [ ] = "$key = :$normkey" ; $ params [ $ normkey ] = $ value ; } else { $ where [ ] = "$key = ?" ; $ params [ ] = $ value ; } } } $ where = implode ( " AND " , $ where ) ; return array ( $ where , $ params ) ; }
docstring: Returns the SQL WHERE conditions.
  @param string $table The table name that these conditions will be validated against.
  @param array $conditions The conditions to build the where clause. (must not contain numeric indexes)
  @throws dml_exception
  @return array An array list containing sql 'where' part and 'params'.
docstring_tokens: Returns the SQL WHERE conditions .