Account Suspended
Account Suspended
This Account has been suspended.
Contact your hosting provider for more information.
 All Data Structures Functions Variables Pages
AttributeImportRulesFactory.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  private static $modelsByClassName = array();
49 
59  public static function makeByImportRulesTypeAndAttributeIndexOrDerivedType($importRulesType,
60  $attributeIndexOrDerivedType,
61  $penultimateModelClassName = null,
62  $explicitReadWriteModelPermissions = null)
63  {
64  assert('is_string($importRulesType)');
65  assert('is_string($attributeIndexOrDerivedType)');
66  assert('($penultimateModelClassName === null) || is_string($penultimateModelClassName)');
67  assert('($explicitReadWriteModelPermissions === null) || $explicitReadWriteModelPermissions instanceof ExplicitReadWriteModelPermissions');
68  $importRulesTypeClassName = ImportRulesUtil::getImportRulesClassNameByType($importRulesType);
69  $attributeImportRulesType = $importRulesTypeClassName::getAttributeImportRulesType(
70  $attributeIndexOrDerivedType);
71  $modelClassName = $importRulesTypeClassName::getModelClassNameByAttributeIndexOrDerivedType(
72  $attributeIndexOrDerivedType);
73  $attributeName = self::resolveModelClassNameAndAttributeNameByAttributeIndexOrDerivedType(
74  $modelClassName,
75  $attributeIndexOrDerivedType);
76  if (isset(self::$modelsByClassName[$modelClassName]))
77  {
78  $model = self::$modelsByClassName[$modelClassName];
79  }
80  else
81  {
82  $model = new $modelClassName(false);
83  self::$modelsByClassName[$modelClassName] = $model;
84  }
85  assert('$attributeImportRulesType !== null');
86  $attributeImportRulesClassName = $attributeImportRulesType . 'AttributeImportRules';
87  if (is_subclass_of($attributeImportRulesClassName, 'DerivedAttributeImportRules'))
88  {
89  return new $attributeImportRulesClassName($model, $explicitReadWriteModelPermissions);
90  }
91  if (is_subclass_of($attributeImportRulesClassName, 'NonDerivedAttributeImportRules'))
92  {
93  $attributeImportRules = new $attributeImportRulesClassName($model, $attributeName, $explicitReadWriteModelPermissions);
94  $attributeImportRules->setPenultimateModelClassName($penultimateModelClassName);
95  $penultimateAttributeName = AttributeImportRulesFactory::
97  $attributeIndexOrDerivedType);
98  $attributeImportRules->setPenultimateAttributeName($penultimateAttributeName);
99  return $attributeImportRules;
100  }
101  return new $attributeImportRulesClassName($model, $attributeName, $explicitReadWriteModelPermissions);
102  }
103 
111  public static function makeCollection($importRulesType, $attributeIndicesOrDerivedTypes)
112  {
113  assert('is_string($importRulesType)');
114  assert('$attributeIndicesOrDerivedTypes == null || is_array($attributeIndicesOrDerivedTypes)');
115  $collection = array();
116  if ($attributeIndicesOrDerivedTypes != null)
117  {
118  foreach ($attributeIndicesOrDerivedTypes as $attributeIndexOrDerivedAttributeType)
119  {
120  $collection[$attributeIndexOrDerivedAttributeType] =
121  self::makeByImportRulesTypeAndAttributeIndexOrDerivedType($importRulesType,
122  $attributeIndexOrDerivedAttributeType);
123  }
124  }
125  return $collection;
126  }
127 
134  public static function getClassNameByImportRulesTypeAndAttributeIndexOrDerivedType($importRulesType,
135  $attributeIndexOrDerivedType)
136  {
137  assert('is_string($importRulesType)');
138  assert('is_string($attributeIndexOrDerivedType)');
139  $importRulesTypeClassName = ImportRulesUtil::getImportRulesClassNameByType($importRulesType);
140  $attributeImportRulesType = $importRulesTypeClassName::
141  getAttributeImportRulesType($attributeIndexOrDerivedType);
142  assert('$attributeImportRulesType !== null');
143  $attributeImportRulesClassName = $attributeImportRulesType . 'AttributeImportRules';
144  return $attributeImportRulesClassName;
145  }
146 
156  & $modelClassName, $attributeIndexOrDerivedType
157  )
158  {
159  assert('is_string($modelClassName)');
160  assert('is_string($attributeIndexOrDerivedType)');
161  $relationNameAndAttributeName = explode(FormModelUtil::DELIMITER, $attributeIndexOrDerivedType);
162  if (count($relationNameAndAttributeName) == 1)
163  {
164  return $attributeIndexOrDerivedType;
165  }
166  else
167  {
168  list($relationName, $attributeName) = $relationNameAndAttributeName;
169  }
170  if (isset(self::$modelsByClassName[$modelClassName]))
171  {
172  $model = self::$modelsByClassName[$modelClassName];
173  }
174  else
175  {
176  $model = new $modelClassName(false);
177  self::$modelsByClassName[$modelClassName] = $model;
178  }
179  $modelClassName = $model->getRelationModelClassName($relationName);
180  assert('$modelClassName != null');
181  return $attributeName;
182  }
183 
191  $attributeIndexOrDerivedType)
192  {
193  assert('is_string($attributeIndexOrDerivedType)');
194  $relationNameAndAttributeName = explode(FormModelUtil::DELIMITER, $attributeIndexOrDerivedType);
195  if (count($relationNameAndAttributeName) == 1)
196  {
197  return $attributeIndexOrDerivedType;
198  }
199  else
200  {
201  list($relationName, $attributeName) = $relationNameAndAttributeName;
202  return $relationName;
203  }
204  }
205  }
206 ?>
static resolveModelClassNameAndAttributeNameByAttributeIndexOrDerivedType(&$modelClassName, $attributeIndexOrDerivedType)
static makeByImportRulesTypeAndAttributeIndexOrDerivedType($importRulesType, $attributeIndexOrDerivedType, $penultimateModelClassName=null, $explicitReadWriteModelPermissions=null)
static getImportRulesClassNameByType($importRulesType)
static getAttributeNameFromAttributeNameByAttributeIndexOrDerivedType($attributeIndexOrDerivedType)
static getClassNameByImportRulesTypeAndAttributeIndexOrDerivedType($importRulesType, $attributeIndexOrDerivedType)
static makeCollection($importRulesType, $attributeIndicesOrDerivedTypes)
Generated on Sun Aug 9 2020 07:10:31
Account Suspended
Account Suspended
This Account has been suspended.
Contact your hosting provider for more information.