Beispiel #1
0
 protected function load($fieldName, $entityName)
 {
     $subList = array('first' . ucfirst($fieldName), ' ', 'last' . ucfirst($fieldName));
     $tableName = Util::toUnderScore($entityName);
     $orderByField = 'first' . ucfirst($fieldName);
     // TODO available in settings
     $fullList = array();
     $fullListReverse = array();
     $fieldList = array();
     $like = array();
     $equal = array();
     foreach ($subList as $subFieldName) {
         $fieldNameTrimmed = trim($subFieldName);
         if (!empty($fieldNameTrimmed)) {
             $columnName = $tableName . '.' . Util::toUnderScore($fieldNameTrimmed);
             $fullList[] = $fieldList[] = $columnName;
             $like[] = $columnName . " LIKE {value}";
             $equal[] = $columnName . " = {value}";
         } else {
             $fullList[] = "'" . $subFieldName . "'";
         }
     }
     $fullListReverse = array_reverse($fullList);
     return array($entityName => array('fields' => array($fieldName => array('type' => 'varchar', 'select' => $this->getSelect($fullList), 'where' => array('LIKE' => "(" . implode(" OR ", $like) . " OR CONCAT(" . implode(", ", $fullList) . ") LIKE {value} OR CONCAT(" . implode(", ", $fullListReverse) . ") LIKE {value})", '=' => "(" . implode(" OR ", $equal) . " OR CONCAT(" . implode(", ", $fullList) . ") = {value} OR CONCAT(" . implode(", ", $fullListReverse) . ") = {value})"), 'orderBy' => '' . $tableName . '.' . Util::toUnderScore($orderByField) . ' {direction}'))));
 }
Beispiel #2
0
 protected function load($fieldName, $entityName)
 {
     $converedFieldName = $fieldName . 'Converted';
     $currencyColumnName = Util::toUnderScore($fieldName);
     $alias = Util::toUnderScore($fieldName) . "_currency_alias";
     $d = array($entityName => array('fields' => array($fieldName => array("type" => "float", "orderBy" => $converedFieldName . " {direction}"))));
     $params = $this->getFieldParams($fieldName);
     if (!empty($params['notStorable'])) {
         $d[$entityName]['fields'][$fieldName]['notStorable'] = true;
     } else {
         $d[$entityName]['fields'][$fieldName . 'Converted'] = array('type' => 'float', 'select' => Util::toUnderScore($entityName) . "." . $currencyColumnName . " * {$alias}.rate", 'where' => array("=" => Util::toUnderScore($entityName) . "." . $currencyColumnName . " * {$alias}.rate = {value}", ">" => Util::toUnderScore($entityName) . "." . $currencyColumnName . " * {$alias}.rate > {value}", "<" => Util::toUnderScore($entityName) . "." . $currencyColumnName . " * {$alias}.rate < {value}", ">=" => Util::toUnderScore($entityName) . "." . $currencyColumnName . " * {$alias}.rate >= {value}", "<=" => Util::toUnderScore($entityName) . "." . $currencyColumnName . " * {$alias}.rate <= {value}", "<>" => Util::toUnderScore($entityName) . "." . $currencyColumnName . " * {$alias}.rate <> {value}"), 'notStorable' => true, 'orderBy' => $converedFieldName . " {direction}");
     }
     return $d;
 }
Beispiel #3
0
 protected function handleCurrencyParams(&$params)
 {
     $entityName = $this->entityName;
     $metadata = $this->getMetadata();
     if (!$metadata) {
         return;
     }
     $defs = $metadata->get('entityDefs.' . $entityName);
     foreach ($defs['fields'] as $field => $d) {
         if (isset($d['type']) && $d['type'] == 'currency') {
             if (!empty($d['notStorable'])) {
                 continue;
             }
             if (empty($params['customJoin'])) {
                 $params['customJoin'] = '';
             }
             $alias = Util::toUnderScore($field) . "_currency_alias";
             $params['customJoin'] .= "\n                    LEFT JOIN currency AS `{$alias}` ON {$alias}.id = " . Util::toUnderScore($entityName) . "." . Util::toUnderScore($field) . "_currency\n                ";
         }
     }
 }
Beispiel #4
0
 protected function load($fieldName, $entityName)
 {
     return array($entityName => array('fields' => array($fieldName => array('select' => 'phoneNumbers.name', 'where' => array('LIKE' => \Fox\Core\Utils\Util::toUnderScore($entityName) . ".id IN (\n                                SELECT entity_id\n                                FROM entity_phone_number\n                                JOIN phone_number ON phone_number.id = entity_phone_number.phone_number_id\n                                WHERE\n                                    entity_phone_number.deleted = 0 AND entity_phone_number.entity_type = '{$entityName}' AND\n                                    phone_number.deleted = 0 AND phone_number.name LIKE {value}\n                            )", '=' => \Fox\Core\Utils\Util::toUnderScore($entityName) . ".id IN (\n                                SELECT entity_id\n                                FROM entity_phone_number\n                                JOIN phone_number ON phone_number.id = entity_phone_number.phone_number_id\n                                WHERE\n                                    entity_phone_number.deleted = 0 AND entity_phone_number.entity_type = '{$entityName}' AND\n                                    phone_number.deleted = 0 AND phone_number.name = {value}\n                            )", '<>' => \Fox\Core\Utils\Util::toUnderScore($entityName) . ".id IN (\n                                SELECT entity_id\n                                FROM entity_phone_number\n                                JOIN phone_number ON phone_number.id = entity_phone_number.phone_number_id\n                                WHERE\n                                    entity_phone_number.deleted = 0 AND entity_phone_number.entity_type = '{$entityName}' AND\n                                    phone_number.deleted = 0 AND phone_number.name <> {value}\n                            )"), 'orderBy' => 'phoneNumbers.name {direction}'), $fieldName . 'Data' => array('type' => 'text', 'notStorable' => true)), 'relations' => array($fieldName . 's' => array('type' => 'manyMany', 'entity' => 'PhoneNumber', 'relationName' => 'entityPhoneNumber', 'midKeys' => array('entity_id', 'phone_number_id'), 'conditions' => array('entityType' => $entityName), 'additionalColumns' => array('entityType' => array('type' => 'varchar', 'len' => 100), 'primary' => array('type' => 'bool', 'default' => false))))));
 }
Beispiel #5
0
 /**
  * Generate index name
  *
  * @return string
  */
 protected function generateIndexName($name, $entityName)
 {
     $names = array('IDX');
     $names[] = strtoupper(Util::toUnderScore($entityName));
     $names[] = strtoupper(Util::toUnderScore($name));
     return implode('_', $names);
 }