$recontactInterval = CRM_Core_DAO::getFieldValue('CRM_Campaign_DAO_Survey',
$surveyId, 'recontact_interval'
);
- $recontactInterval = unserialize($recontactInterval);
+ $recontactInterval = CRM_Utils_String::unserialize($recontactInterval);
if ($surveyId &&
is_array($recontactInterval) &&
!empty($recontactInterval)
if (!empty($defaults['result_id']) && !empty($defaults['recontact_interval'])) {
$resultId = $defaults['result_id'];
- $recontactInterval = unserialize($defaults['recontact_interval']);
+ $recontactInterval = CRM_Utils_String::unserialize($defaults['recontact_interval']);
unset($defaults['recontact_interval']);
$defaults['option_group_id'] = $resultId;
$survey->result_id = $id;
if ($survey->find(TRUE)) {
if ($survey->recontact_interval) {
- $recontactInterval = unserialize($survey->recontact_interval);
+ $recontactInterval = CRM_Utils_String::unserialize($survey->recontact_interval);
foreach ($opValues as $opValId => $opVal) {
if (is_numeric($recontactInterval[$opVal['label']])) {
$opValues[$opValId]['interval'] = $recontactInterval[$opVal['label']];
$fv = CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_SavedSearch', $id, 'form_values');
$result = NULL;
if ($fv) {
- // make sure u unserialize - since it's stored in serialized form
- $result = unserialize($fv);
+ // make sure u CRM_Utils_String::unserialize - since it's stored in serialized form
+ $result = CRM_Utils_String::unserialize($fv);
}
$specialFields = ['contact_type', 'group', 'contact_tags', 'member_membership_type_id', 'member_status_id'];
$row['description'] = $group->description;
$row['id'] = $savedSearch->id;
- $formValues = unserialize($savedSearch->form_values);
+ $formValues = CRM_Utils_String::unserialize($savedSearch->form_values);
$query = new CRM_Contact_BAO_Query($formValues);
$row['query_detail'] = $query->qill();
}
//CRM-16165, Don't allow reccuring contribution if membership block contain any renewable membership option
- $membershipTypes = unserialize($membershipBlock->membership_types);
+ $membershipTypes = CRM_Utils_String::unserialize($membershipBlock->membership_types);
if (!empty($fields['is_recur']) && !empty($membershipTypes)) {
if (!$membershipBlock->is_separate_payment) {
$errors['is_recur'] = ts('You need to enable Separate Membership Payment when online contribution page is configured for both Membership and Recurring Contribution.');
// Upgrade support -- old records (serialize) always have this punctuation,
// and new records (base64) never do.
if (strpos($string, ':') !== FALSE || strpos($string, ';') !== FALSE) {
- return unserialize($string);
+ return CRM_Utils_String::unserialize($string);
}
else {
- return unserialize(base64_decode($string));
+ return CRM_Utils_String::unserialize(base64_decode($string));
}
}
$domain->id = CRM_Core_Config::domainID();
$domain->find(TRUE);
if ($domain->config_backend) {
- $params = array_merge(unserialize($domain->config_backend), $params);
+ $params = array_merge(CRM_Utils_String::unserialize($domain->config_backend), $params);
}
$params = CRM_Core_BAO_ConfigSetting::filterSkipVars($params);
$domain->id = CRM_Core_Config::domainID();
$domain->find(TRUE);
if ($domain->config_backend) {
- $defaults = unserialize($domain->config_backend);
+ $defaults = CRM_Utils_String::unserialize($domain->config_backend);
if ($defaults === FALSE || !is_array($defaults)) {
$defaults = [];
return FALSE;
$count = 0;
while ($dao->fetch()) {
if (self::is_serialized($dao->data)) {
- $main[$count] = unserialize($dao->data);
+ $main[$count] = CRM_Utils_String::unserialize($dao->data);
}
else {
$main[$count] = $dao->data;
* @return bool
*/
public static function is_serialized($string) {
- return (@unserialize($string) !== FALSE);
+ return (@CRM_Utils_String::unserialize($string) !== FALSE);
}
/**
foreach ($prevNextId as $id) {
$dao->id = $id;
if ($dao->find(TRUE)) {
- $originalData = unserialize($dao->data);
+ $originalData = CRM_Utils_String::unserialize($dao->data);
$srcFields = ['ID', 'Name'];
$swapFields = ['srcID', 'srcName', 'dstID', 'dstName'];
$data = array_diff_assoc($originalData, array_fill_keys($swapFields, 1));
$params["domain_id"] = $value["id"];
$params["options"] = ['wp-rebuild' => $rebuildEach];
// Unserialize word match string.
- $localeCustomArray = unserialize($value["locale_custom_strings"]);
+ $localeCustomArray = CRM_Utils_String::unserialize($value["locale_custom_strings"]);
if (!empty($localeCustomArray)) {
$wordMatchArray = [];
// Only return the replacement strings of the current language,
1 => [$domainId, 'Integer'],
]);
while ($domain->fetch()) {
- return empty($domain->locale_custom_strings) ? [] : unserialize($domain->locale_custom_strings);
+ return empty($domain->locale_custom_strings) ? [] : CRM_Utils_String::unserialize($domain->locale_custom_strings);
}
}
WHERE is_domain = 1 AND name = "installed"
');
while ($dao->fetch()) {
- $value = unserialize($dao->value);
+ $value = CRM_Utils_String::unserialize($dao->value);
if (!empty($value)) {
Civi::settings()->set('installed', 1);
return;
return strlen($value) ? json_decode($value, TRUE) : [];
case self::SERIALIZE_PHP:
- return strlen($value) ? unserialize($value, ['allowed_classes' => FALSE]) : [];
+ return strlen($value) ? CRM_Utils_String::unserialize($value) : [];
case self::SERIALIZE_COMMA:
return explode(',', trim(str_replace(', ', '', $value)));
// Move module_data into main item.
if (isset(self::$_menuCache[$menu->path]['module_data'])) {
CRM_Utils_Array::extend(self::$_menuCache[$menu->path],
- unserialize(self::$_menuCache[$menu->path]['module_data']));
+ CRM_Utils_String::unserialize(self::$_menuCache[$menu->path]['module_data']));
unset(self::$_menuCache[$menu->path]['module_data']);
}
// Unserialize other elements.
foreach (self::$_serializedElements as $element) {
- self::$_menuCache[$menu->path][$element] = unserialize($menu->$element);
+ self::$_menuCache[$menu->path][$element] = CRM_Utils_String::unserialize($menu->$element);
if (strpos($path, $menu->path) !== FALSE) {
$menuPath = &self::$_menuCache[$menu->path];
$loader = $this->buildClassLoader();
$ser = serialize($loader);
file_put_contents($file,
- sprintf("<?php\nreturn unserialize(%s);", var_export($ser, 1))
+ sprintf("<?php\nreturn CRM_Utils_String::unserialize(%s);", var_export($ser, 1))
);
}
return $loader->register();
if ($dao->find(TRUE)) {
CRM_Core_DAO::storeValues($dao, $membershipBlock);
if (!empty($membershipBlock['membership_types'])) {
- $membershipTypes = unserialize($membershipBlock['membership_types']);
+ $membershipTypes = CRM_Utils_String::unserialize($membershipBlock['membership_types']);
if (!is_array($membershipTypes)) {
return $membershipBlock;
}
$item = new stdClass();
$item->id = $id;
- $item->data = unserialize($data);
+ $item->data = CRM_Utils_String::unserialize($data);
return $item;
}
else {
$item = new stdClass();
$item->id = $id;
- $item->data = unserialize($data);
+ $item->data = CRM_Utils_String::unserialize($data);
return $item;
}
// nothing in queue
# $dao->submit_time = date('YmdHis', strtotime($dao->submit_time));
# $dao->release_time = date('YmdHis', $nowEpoch + $lease_time);
# $dao->save();
- $dao->data = unserialize($dao->data);
+ $dao->data = CRM_Utils_String::unserialize($dao->data);
$result = $dao;
}
'1' => [date('YmdHis', $nowEpoch + $lease_time), 'String'],
'2' => [$dao->id, 'Integer'],
]);
- $dao->data = unserialize($dao->data);
+ $dao->data = CRM_Utils_String::unserialize($dao->data);
return $dao;
}
}
*/
public static function instance($qrid) {
if (!empty($_SESSION['queueRunners'][$qrid])) {
- return unserialize($_SESSION['queueRunners'][$qrid]);
+ return CRM_Utils_String::unserialize($_SESSION['queueRunners'][$qrid]);
}
else {
return NULL;
$formValues = CRM_Utils_Array::value('form_values', $this->_instanceValues);
if ($formValues) {
- $this->_formValues = unserialize($formValues);
+ $this->_formValues = CRM_Utils_String::unserialize($formValues);
}
else {
$this->_formValues = NULL;
* The input array with duplicate values removed.
*/
public static function crmArrayUnique($array) {
- $result = array_map("unserialize", array_unique(array_map("serialize", $array)));
+ $result = array_map("CRM_Utils_String::unserialize", array_unique(array_map("serialize", $array)));
foreach ($result as $key => $value) {
if (is_array($value)) {
$result[$key] = self::crmArrayUnique($value);
}
private function reobjectify($value) {
- return is_object($value) ? unserialize(serialize($value)) : $value;
+ return is_object($value) ? CRM_Utils_String::unserialize(serialize($value)) : $value;
}
}
private function reobjectify($value) {
if (is_object($value)) {
- return unserialize(serialize($value));
+ return CRM_Utils_String::unserialize(serialize($value));
}
if (is_array($value)) {
foreach ($value as $p) {
if (is_object($p)) {
- return unserialize(serialize($value));
+ return CRM_Utils_String::unserialize(serialize($value));
}
}
}
}
private function reobjectify($value) {
- return is_object($value) ? unserialize(serialize($value)) : $value;
+ return is_object($value) ? CRM_Utils_String::unserialize(serialize($value)) : $value;
}
}
public function get($key, $default = NULL) {
CRM_Utils_Cache::assertValidKey($key);
$result = $this->_cache->get($this->getTruePrefix() . $key);
- return ($result === FALSE) ? $default : unserialize($result);
+ return ($result === FALSE) ? $default : CRM_Utils_String::unserialize($result);
}
/**
$result = $this->_cache->get($key);
switch ($this->_cache->getResultCode()) {
case Memcached::RES_SUCCESS:
- return unserialize($result);
+ return CRM_Utils_String::unserialize($result);
case Memcached::RES_NOTFOUND:
return $default;
public function get($key, $default = NULL) {
CRM_Utils_Cache::assertValidKey($key);
$result = $this->_cache->get($this->_prefix . $key);
- return ($result === FALSE) ? $default : unserialize($result);
+ return ($result === FALSE) ? $default : CRM_Utils_String::unserialize($result);
}
/**
}
private function reobjectify($value) {
- return is_object($value) ? unserialize(serialize($value)) : $value;
+ return is_object($value) ? CRM_Utils_String::unserialize(serialize($value)) : $value;
}
/**
* @copyright CiviCRM LLC (c) 2004-2019
*/
+use function xKerman\Restricted\unserialize;
+use xKerman\Restricted\UnserializeFailedException;
+
require_once 'HTML/QuickForm/Rule/Email.php';
/**
return array_values(array_unique($result));
}
+ /**
+ * Use xkerman/restricted-unserialize to unserialize a string of data.
+ * @param string|NULL $string
+ *
+ * @return mixed
+ * @throws CRM_Core_Exception
+ */
+ public static function unserialize($string) {
+ if (!is_string($string)) {
+ return FALSE;
+ }
+ try {
+ return unserialize($string);
+ }
+ catch (UnserializeFailedException $e) {
+ throw new CRM_Core_Exception($e->getMessage());
+ }
+ }
+
}
if (!$isUpgradeMode || \CRM_Core_DAO::checkTableExists('civicrm_setting')) {
$dao = \CRM_Core_DAO::executeQuery($this->createQuery()->toSQL());
while ($dao->fetch()) {
- $this->values[$dao->name] = ($dao->value !== NULL) ? unserialize($dao->value) : NULL;
+ $this->values[$dao->name] = ($dao->value !== NULL) ? \CRM_Utils_String::unserialize($dao->value) : NULL;
}
}
foreach ($metadata['on_change'] as $callback) {
call_user_func(
\Civi\Core\Resolver::singleton()->get($callback),
- unserialize($dao->value),
+ \CRM_Utils_String::unserialize($dao->value),
$value,
$metadata,
$this->domainId
}
else {
// Assume that form_values is serialized.
- $params["formValues"] = unserialize($params["form_values"]);
+ $params["formValues"] = CRM_Utils_String::unserialize($params["form_values"]);
}
}
// Only clean up the values if there are values. (A getCount operation
// for example does not return values.)
foreach ($result['values'] as $key => $value) {
- $result['values'][$key]['form_values'] = unserialize($value['form_values']);
+ $result['values'][$key]['form_values'] = CRM_Utils_String::unserialize($value['form_values']);
}
}
}