Esempio n. 1
0
 /**
  * We translate the names of two classes into a relation table.
  * Its always {CLASS1}_{CLASS2}_rel while the classes are sorted in alphabetic order.
  *
  * @param string $myObject      Own class.
  * @param string $foreignObject Foreign class.
  *
  * @return string Relation name.
  */
 protected static function _translateIntoRelationTableName(Phprojekt_ActiveRecord_Abstract $myObject, Phprojekt_ActiveRecord_Abstract $foreignObject)
 {
     $tableNames = array();
     $myTable = $myObject->getTableName();
     $foreignTable = $foreignObject->getTableName();
     $tableNames[] = $myTable;
     $tableNames[] = $foreignTable;
     sort($tableNames);
     reset($tableNames);
     $tableName = sprintf('%s_relation', implode('_', $tableNames));
     return $tableName;
 }
Esempio n. 2
0
 /**
  * Convert the rule and value into a real where clause.
  *
  * @param string $field      Field for filter.
  * @param string $identifier Converted field for filter.
  * @param string $rule       Rule for apply the filter.
  * @param string $keyword    Value used for filter.
  *
  * @return string Where clause.
  */
 private function _convertRule($field, $identifier, $rule, $keyword)
 {
     // Sanitize values
     if ($this->_info['metadata'][$identifier]['DATA_TYPE'] == 'time') {
         // Moving the value to UTC
         $identifier = $this->_record->getTableName() . '.' . $identifier;
         $identifier = Phprojekt::getInstance()->getDb()->quoteIdentifier($identifier);
         $value = Cleaner::sanitize('time', $keyword);
         $k = date("H:i:s", Phprojekt_Converter_Time::userToUtc($value));
         //$identifier = 'TIME(' . $identifier . ')';
     } else {
         if ($this->_info['metadata'][$identifier]['DATA_TYPE'] == 'datetime') {
             $identifier = $this->_record->getTableName() . '.' . $identifier;
             $identifier = Phprojekt::getInstance()->getDb()->quoteIdentifier($identifier);
             if (strstr($keyword, '-')) {
                 // Use it as date
                 $k = Cleaner::sanitize('date', $keyword);
                 $identifier = 'DATE(' . $identifier . ')';
             } else {
                 if (strstr($keyword, ':')) {
                     // Use it as time
                     $value = Cleaner::sanitize('time', $keyword);
                     $k = date("H:i:s", Phprojekt_Converter_Time::userToUtc($value));
                     $identifier = 'TIME(' . $identifier . ')';
                 } else {
                     // Use it as datetime
                     $value = Cleaner::sanitize('timestamp', $keyword);
                     $k = date("Y-m-d H:i:s", Phprojekt_Converter_Time::userToUtc($value));
                 }
             }
         } else {
             $keyword = mb_strtolower($keyword, 'UTF-8');
             $k = $keyword;
             $identifier = $this->_record->getTableName() . '.' . $identifier;
             $identifier = Phprojekt::getInstance()->getDb()->quoteIdentifier($identifier);
         }
     }
     switch ($rule) {
         case 'equal':
             $w = $identifier . ' = ? ';
             break;
         case 'notEqual':
             $w = $identifier . ' != ? ';
             break;
         case 'major':
             $w = $identifier . ' > ? ';
             break;
         case 'majorEqual':
             $w = $identifier . ' >= ? ';
             break;
         case 'minor':
             $w = $identifier . ' < ? ';
             break;
         case 'minorEqual':
             $w = $identifier . ' <= ? ';
             break;
         case 'begins':
             $w = $identifier . ' LIKE ? ';
             $k = $keyword . '%';
             break;
         case 'ends':
             $w = $identifier . ' LIKE ? ';
             $k = '%' . $keyword;
             break;
         case 'notLike':
             $w = $identifier . ' NOT LIKE ? ';
             $k = '%' . $keyword . '%';
             break;
         case 'like':
         default:
             $w = $identifier . ' LIKE ? ';
             $k = '%' . $keyword . '%';
     }
     return Phprojekt::getInstance()->getDb()->quoteInto($w, $k);
 }