Account Suspended
Account Suspended
This Account has been suspended.
Contact your hosting provider for more information.
 All Data Structures Functions Variables Pages
RedBeanModelToTableSchemaAdapter.php
1 <?php
2  /*********************************************************************************
3  * Zurmo is a customer relationship management program developed by
4  * Zurmo, Inc. Copyright (C) 2017 Zurmo Inc.
5  *
6  * Zurmo is free software; you can redistribute it and/or modify it under
7  * the terms of the GNU Affero General Public License version 3 as published by the
8  * Free Software Foundation with the addition of the following permission added
9  * to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK
10  * IN WHICH THE COPYRIGHT IS OWNED BY ZURMO, ZURMO DISCLAIMS THE WARRANTY
11  * OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
12  *
13  * Zurmo is distributed in the hope that it will be useful, but WITHOUT
14  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
15  * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
16  * details.
17  *
18  * You should have received a copy of the GNU Affero General Public License along with
19  * this program; if not, see http://www.gnu.org/licenses or write to the Free
20  * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
21  * 02110-1301 USA.
22  *
23  * You can contact Zurmo, Inc. with a mailing address at 27 North Wacker Drive
24  * Suite 370 Chicago, IL 60606. or at email address contact@zurmo.com.
25  *
26  * The interactive user interfaces in original and modified versions
27  * of this program must display Appropriate Legal Notices, as required under
28  * Section 5 of the GNU Affero General Public License version 3.
29  *
30  * In accordance with Section 7(b) of the GNU Affero General Public License version 3,
31  * these Appropriate Legal Notices must retain the display of the Zurmo
32  * logo and Zurmo copyright notice. If the display of the logo is not reasonably
33  * feasible for technical reasons, the Appropriate Legal Notices must display the words
34  * "Copyright Zurmo Inc. 2017. All rights reserved".
35  ********************************************************************************/
36 
41  {
48  public static function resolve($modelClassName, & $messageLogger)
49  {
50  if (empty($modelClassName) || !@class_exists($modelClassName) || !$modelClassName::getCanHaveBean())
51  {
52  return false;
53  }
54  $metadata = $modelClassName::getMetadata();
55  $modelMetadata = array();
56  if (isset($metadata[$modelClassName]))
57  {
58  $modelMetadata = $metadata[$modelClassName];
59  }
60  $memberColumns = array();
61  $relationColumns = array();
62  $indexes = array();
63  $uniqueIndexesFromValidators = array();
64  $parentColumnName = null;
65 
66  if (isset($modelMetadata['members']))
67  {
68  if (!isset($modelMetadata['rules']))
69  {
70  $errorMessage = Zurmo::t('Core', '{{model}} must have both, members and rules, set.',
71  array('{{model}}' => $modelClassName));
72  $messageLogger->addErrorMessage($errorMessage);
73  throw new CException($errorMessage);
74  }
75  $memberColumns = RedBeanModelMemberRulesToColumnsAdapter::resolve($modelClassName,
76  $modelMetadata['members'],
77  $modelMetadata['rules'],
78  $messageLogger);
79  $uniqueIndexesFromValidators = RedBeanModelMemberRulesToColumnAdapter::
80  resolveUniqueIndexesFromValidator($modelClassName);
81  }
82  if (isset($modelMetadata['relations']))
83  {
84  $relationColumns = RedBeanModelRelationsToColumnsAdapter::resolve($modelClassName,
85  $modelMetadata['relations'],
86  $messageLogger);
87  }
88  if (isset($modelMetadata['indexes']) || !empty($uniqueIndexesFromValidators))
89  {
90  $indexesMetadata = $uniqueIndexesFromValidators;
91  if (!empty($modelMetadata['indexes']))
92  {
93  if (!empty($indexesMetadata))
94  {
95  $indexesMetadata = CMap::mergeArray($indexesMetadata, $modelMetadata['indexes']);
96  }
97  else
98  {
99  $indexesMetadata = $modelMetadata['indexes'];
100  }
101  }
102  if (!empty($indexesMetadata))
103  {
104  $indexes = RedBeanModelMemberIndexesMetadataAdapter::resolve($modelClassName,
105  $indexesMetadata,
106  $messageLogger);
107  }
108  }
109  $parentColumnName = RedBeanModelChildParentRelationshipToColumnAdapter::resolve($modelClassName);
110  if ($parentColumnName)
111  {
112  $memberColumns[] = $parentColumnName;
113  }
114  $mixinColumns = RedBeanModelMixinsToColumnsAdapter::resolve($modelClassName, $messageLogger);
115  $columns = CMap::mergeArray($memberColumns, $mixinColumns, $relationColumns);
116  $tableName = $modelClassName::getTableName();
117  $schemaDefinition = array($tableName => array('columns' => $columns, 'indexes' => $indexes));
118  return $schemaDefinition;
119  }
120  }
121 ?>
static resolve($modelClassName, &$messageLogger)
static resolve($modelClassName, array $indexesMetadata, &$messageLogger)
static resolve($modelClassName, &$messageLogger)
static resolve($modelClassName, array $relations, &$messageLogger)
static resolve($modelClassName, array $members, array $rules, &$messageLogger)
Generated on Tue Jul 14 2020 07:10:28
Account Suspended
Account Suspended
This Account has been suspended.
Contact your hosting provider for more information.