Account Suspended
Account Suspended
This Account has been suspended.
Contact your hosting provider for more information.
 All Data Structures Functions Variables Pages
CustomFieldData.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 
38  {
43  private static $cachedModelsByName = array();
44 
52  public static function getByName($name, $shouldCache = true)
53  {
54  if (isset(self::$cachedModelsByName[$name]))
55  {
56  return self::$cachedModelsByName[$name];
57  }
58  try
59  {
60  // not using default value to save cpu cycles on requests that follow the first exception.
61  return GeneralCache::getEntry('CustomFieldData' . $name);
62  }
63  catch (NotFoundException $e)
64  {
65  assert('is_string($name)');
66  assert('$name != ""');
67  $bean = ZurmoRedBean::findOne('customfielddata', "name = :name ", array(':name' => $name));
68  assert('$bean === false || $bean instanceof RedBean_OODBBean');
69  if ($bean === false)
70  {
71  $customFieldData = new CustomFieldData();
72  $customFieldData->name = $name;
73  $customFieldData->serializedData = serialize(array());
74  // An unused custom field data does not present as needing saving.
75  $customFieldData->setNotModified();
76  }
77  else
78  {
79  $customFieldData = self::makeModel($bean);
80  }
81  if ($shouldCache)
82  {
83  self::$cachedModelsByName[$name] = $customFieldData;
84  GeneralCache::cacheEntry('CustomFieldData' . $name, $customFieldData);
85  }
86  return $customFieldData;
87  }
88  }
89 
90  public function __toString()
91  {
92  return $this->name;
93  }
94 
95  public static function getDefaultMetadata()
96  {
97  $metadata = parent::getDefaultMetadata();
98  $metadata[__CLASS__] = array(
99  'members' => array(
100  'name',
101  'defaultValue',
102  'serializedData',
103  'serializedLabels',
104  ),
105  'rules' => array(
106  array('name', 'required'),
107  array('name', 'unique'),
108  array('name', 'type', 'type' => 'string'),
109  array('name', 'length', 'min' => 1, 'max' => 64),
110  array('name', 'match', 'pattern' => '/[A-Z]([a-zA-Z]*[a-z]|[a-z]?)/',
111  'message' => 'Name must be PascalCase.'),
112  array('defaultValue', 'type', 'type' => 'string'),
113  array('serializedData', 'required'),
114  array('serializedData', 'type', 'type' => 'string'),
115  array('serializedLabels', 'type', 'type' => 'string'),
116  )
117  );
118  return $metadata;
119  }
120 
125  public function save($runValidation = true, array $attributeNames = null)
126  {
127  $saved = parent::save($runValidation, $attributeNames);
128  if ($saved)
129  {
130  self::$cachedModelsByName[$this->name] = $this;
131  GeneralCache::cacheEntry('CustomFieldData' . $this->name, $this);
132  }
133  return $saved;
134  }
135 
136  protected function unrestrictedDelete()
137  {
138  unset(self::$cachedModelsByName[$this->name]);
139  GeneralCache::forgetEntry('CustomFieldData' . $this->name);
140  return parent::unrestrictedDelete();
141  }
142 
143  public static function forgetAllPhpCache()
144  {
145  self::$cachedModelsByName = array();
146  }
147  }
148 ?>
save($runValidation=true, array $attributeNames=null)
static getByName($name, $shouldCache=true)
Generated on Tue Sep 29 2020 07:10:26
Account Suspended
Account Suspended
This Account has been suspended.
Contact your hosting provider for more information.