function setAttribute($attr, $val) { switch ($attr) { case 'product_categories': $this->ProductCategories = $val; break; default: parent::setAttribute($attr, $val); break; } }
function setAttribute($attr, $val) { switch ($attr) { case 'limit_value': $this->LimitValue = $val; break; default: parent::setAttribute($attr, $val); break; } }
function setAttribute($attr, $val) { switch ($attr) { case 'is_enabled': if (!$val) { $user = eZUser::fetch($this->UserID); if ($user) { eZUser::removeSessionData($this->UserID); } } break; } eZPersistentObject::setAttribute($attr, $val); }
function setAttribute( $attr, $val ) { switch( $attr ) { case 'limit_value': { $this->LimitValue = $val; } break; default: { eZPersistentObject::setAttribute( $attr, $val ); } break; } }
function setAttribute( $attr, $val ) { switch( $attr ) { case 'product_categories': { $this->ProductCategories = $val; } break; default: { eZPersistentObject::setAttribute( $attr, $val ); } break; } }
function setAttribute($attr, $val) { switch ($attr) { case 'is_enabled': if (!$val) { $user = eZUser::fetch($this->UserID); if ($user) { eZUser::removeSessionData($this->UserID); } } eZUser::purgeUserCacheByUserId($this->UserID); break; } parent::setAttribute($attr, $val); }
function setAttribute($attr, $val) { switch ($attr) { case 'discount_percent': $locale = eZLocale::instance(); $val = $locale->internalNumber($val); if ($val < 0.0) { $val = 0.0; } if ($val > 100.0) { $val = 100.0; } eZPersistentObject::setAttribute($attr, $val); break; default: eZPersistentObject::setAttribute($attr, $val); break; } }
/** * (non-PHPdoc) * @see kernel/classes/eZPersistentObject#setAttribute($attr, $val) */ function setAttribute($attr, $value) { switch ($attr) { case 'status': if ($value === CjwNewsletterEditionSend::STATUS_MAILQUEUE_CREATED) { $this->setAttribute('mailqueue_created', time()); } elseif ($value === CjwNewsletterEditionSend::STATUS_MAILQUEUE_PROCESS_STARTED) { $this->setAttribute('mailqueue_process_started', time()); } elseif ($value === CjwNewsletterEditionSend::STATUS_MAILQUEUE_PROCESS_FINISHED) { $this->setAttribute('mailqueue_process_finished', time()); } elseif ($value === CjwNewsletterEditionSend::STATUS_ABORT) { $this->setAttribute('mailqueue_process_aborted', time()); } return eZPersistentObject::setAttribute($attr, $value); break; default: return eZPersistentObject::setAttribute($attr, $value); } }
function setAttribute($attr, $val) { switch ($attr) { case 'limit_identifier': if (!$this->LimitIdentifier) { $this->LimitIdentifier = $val; } break; case 'limit_value': if (!$this->LimitValue) { $this->LimitValue = $val; } break; case 'user_role_id': if (!$this->UserRoleID) { $this->UserRoleID = $val; } break; default: parent::setAttribute($attr, $val); break; } }
function setAttribute($attr, $value) { $userData = eZUserSubscriptionData::fetch($this->attribute('email')); switch ($attr) { case 'email': if (!$userData) { $userData = eZUserSubscriptionData::create('', '', '', $value); } else { $userData->updateAttribute('email', $value); $userData->store(); } eZPersistentObject::setAttribute($attr, $value); break; case 'name': if ($userData) { $userData->setAttribute($attr, $value); $userData->store(); } break; case 'firstname': if ($userData) { $userData->setAttribute($attr, $value); $userData->store(); } break; case 'mobile': if ($userData) { $userData->setAttribute($attr, $value); $userData->store(); } break; case 'password': if ($userData) { $userData->setAttribute($attr, md5($value)); $userData->store(); } break; case 'user_id': if ($this->attribute($attr) != $value && $value != 0) { $user = eZUser::fetch($value); if (!$user) { return; } eZPersistentObject::setAttribute($attr, $value); } else { if ($value == 0) { eZPersistentObject::setAttribute($attr, $value); } } break; case 'status': if ($this->attribute($attr) != $value) { switch ($value) { case eZSubscription::StatusConfirmed: $this->setAttribute('confirmed', time()); break; case eZSubscription::StatusApproved: $this->setAttribute('approved', time()); break; case eZSubscription::StatusRemovedAdmin: case eZSubscription::StatusRemovedSelf: $this->setAttribute('removed', time()); break; } eZPersistentObject::setAttribute($attr, $value); } break; default: eZPersistentObject::setAttribute($attr, $value); break; } }
function setAttribute($name, $value) { parent::setAttribute($name, $value); if ($name == 'text') { $this->TextMD5 = md5(eZURLAliasML::strtolower($value)); } else { if ($name == 'action') { $this->ActionType = null; } } }
function setVersion($version, $set_childs = false) { if (is_array($set_childs) or $set_childs) { if (is_array($set_childs)) { $events = $set_childs; } else { $events = $this->fetchEvents(); } foreach ($events as $event) { $event->setAttribute("version", $version); } } eZPersistentObject::setAttribute("version", $version); }
/** * (non-PHPdoc) * @see kernel/classes/eZPersistentObject#setAttribute($attr, $val) */ function setAttribute($attr, $value) { switch ($attr) { case 'status': // only update timestamp and status if status id is changed if ($this->attribute('status') == $value) { return; } $currentTimeStamp = time(); // set status timestamps switch ($value) { case CjwNewsletterSubscription::STATUS_CONFIRMED: $this->setAttribute('removed', 0); $this->setAttribute('confirmed', $currentTimeStamp); $newsletterListAttributeContent = $this->attribute('newsletter_list_attribute_content'); // set approve automatically if defined in list config if (is_object($newsletterListAttributeContent) and (int) $newsletterListAttributeContent->attribute('auto_approve_registered_user') == 1) { $this->setAttribute('approved', $currentTimeStamp); $value = CjwNewsletterSubscription::STATUS_APPROVED; } else { // if subscription status is changed from approved to confirmed the approved timestamp should be removed $this->setAttribute('approved', 0); } break; case CjwNewsletterSubscription::STATUS_APPROVED: $this->setAttribute('approved', $currentTimeStamp); $this->setAttribute('removed', 0); break; case CjwNewsletterSubscription::STATUS_REMOVED_ADMIN: case CjwNewsletterSubscription::STATUS_REMOVED_SELF: $this->setAttribute('removed', $currentTimeStamp); break; } $this->setAttribute('modified', $currentTimeStamp); $statusOld = $this->attribute('status'); $statusNew = $value; if ($statusOld != $statusNew) { CjwNewsletterLog::writeNotice('CjwNewsletterSubscription::setAttribute', 'subscription', 'status', array('status_old' => $statusOld, 'status_new' => $statusNew, 'subscription_id' => $this->attribute('id'), 'list_id' => $this->attribute('list_contentobject_id'), 'nl_user' => $this->attribute('newsletter_user_id'), 'modifier' => eZUser::currentUserID())); } else { CjwNewsletterLog::writeDebug('CjwNewsletterSubscription::setAttribute', 'subscription', 'status', array('status_old' => $statusOld, 'status_new' => $statusNew, 'subscription_id' => $this->attribute('id'), 'list_id' => $this->attribute('list_contentobject_id'), 'nl_user' => $this->attribute('newsletter_user_id'), 'modifier' => eZUser::currentUserID())); } eZPersistentObject::setAttribute($attr, $value); break; default: eZPersistentObject::setAttribute($attr, $value); break; } }
function setAttribute($attribute, $value) { $found = false; switch ($attribute) { case 'contentobjectattribute_id': $this->ContentObjectAttributeID = $this->contentobjectattributeID(); $found = true; break; } if ($found === false) { parent::setAttribute($attribute, $value); } }
function updateAttribute($attr, $value) { eZPersistentObject::setAttribute($attr, $value); }
/** * (non-PHPdoc) * @see kernel/classes/eZPersistentObject#setAttribute($attr, $val) */ function setAttribute($attr, $value) { switch ($attr) { case 'status': switch ($value) { case CjwNewsletterEditionSendItem::STATUS_NEW: $this->setAttribute('created', time()); break; case CjwNewsletterEditionSendItem::STATUS_SEND: $this->setAttribute('processed', time()); break; case CjwNewsletterEditionSendItem::STATUS_ABORT: $this->setAttribute('processed', time()); break; default: break; } CjwNewsletterLog::writeDebug('set status - CjwNewsletterEditionSendItem::setAttribute', 'send_item', $this->attribute('id'), array('status_old' => $this->attribute('status'), 'status_new' => $value, 'nl_user' => $this->attribute('newsletter_user_id'))); return eZPersistentObject::setAttribute($attr, $value); break; default: return eZPersistentObject::setAttribute($attr, $value); } }
/** * * @see kernel/classes/eZPersistentObject#setAttribute($attr, $val) */ function setAttribute($attr, $value) { // TODO check if modified should be update every time a attribute is set // may be in store method better place to do this switch ($attr) { case 'email': $currentEmail = $this->attribute('email'); $newEmail = $value; if ($currentEmail != $newEmail) { CjwNewsletterLog::writeNotice('set new email CjwNewsletterUser::setAttribute', 'user', 'email', array('nl_user' => $this->attribute('id'), 'email_old' => $currentEmail, 'email_new' => $newEmail, 'status' => $this->attribute('status'), 'modifier' => eZUser::currentUserID())); } return eZPersistentObject::setAttribute($attr, $value); break; case 'status': $currentTimeStamp = time(); switch ($value) { case CjwNewsletterUser::STATUS_CONFIRMED: $this->setAttribute('confirmed', $currentTimeStamp); // if a user is confirmed reset bounce count $this->resetBounceCount(); break; case CjwNewsletterUser::STATUS_BOUNCED_SOFT: case CjwNewsletterUser::STATUS_BOUNCED_HARD: $this->setAttribute('bounced', $currentTimeStamp); // set all subscriptions and all open senditems to bounced // see // setBounced // setAllNewsletterUserRelatedItemsToStatus break; case CjwNewsletterUser::STATUS_REMOVED_ADMIN: case CjwNewsletterUser::STATUS_REMOVED_SELF: $this->setAttribute('removed', $currentTimeStamp); // set all subscriptions and all open senditems to removed // break; case CjwNewsletterUser::STATUS_BLACKLISTED: $this->setAttribute('blacklisted', $currentTimeStamp); // set all subscriptions and all open senditems to blacklisted // see // setBlacklisted // setAllNewsletterUserRelatedItemsToStatus break; } $statusOld = $this->attribute('status'); $statusNew = $value; if ($statusOld != $statusNew) { CjwNewsletterLog::writeNotice('set CjwNewsletterUser::setAttribute', 'user', 'status', array('nl_user' => $this->attribute('id'), 'status_old' => $statusOld, 'status_new' => $statusNew, 'modifier' => eZUser::currentUserID())); } else { CjwNewsletterLog::writeDebug('set CjwNewsletterUser::setAttribute', 'user', 'status', array('nl_user' => $this->attribute('id'), 'status_old' => $statusOld, 'status_new' => $statusNew, 'modifier' => eZUser::currentUserID())); } return eZPersistentObject::setAttribute($attr, $value); break; default: return eZPersistentObject::setAttribute($attr, $value); } }
/** * Stores the data in $obj to database. * * Note: Transaction unsafe. If you call several transaction unsafe methods * you must enclose the calls within a db transaction; thus within db->begin * and db->commit. * * @todo Change the actual access to protected instead of just marking it as such * @access protected * @param eZPersistentObject $obj * @param array|null $fieldFilters If specified only certain fields will be stored. * @return void */ public static function storeObject($obj, $fieldFilters = null) { $db = eZDB::instance(); $useFieldFilters = isset($fieldFilters) && is_array($fieldFilters) && $fieldFilters; $def = $obj->definition(); $fields = $def["fields"]; $keys = $def["keys"]; $table = $def["name"]; $relations = isset($def["relations"]) ? $def["relations"] : null; $insert_object = false; $exclude_fields = array(); foreach ($keys as $key) { $value = $obj->attribute($key); if ($value === null) { $insert_object = true; $exclude_fields[] = $key; } } if ($useFieldFilters) { $insert_object = false; } $use_fields = array_diff(array_keys($fields), $exclude_fields); // If we filter out some of the fields we need to intersect it with $use_fields if (is_array($fieldFilters)) { $use_fields = array_intersect($use_fields, $fieldFilters); } $doNotEscapeFields = array(); $changedValueFields = array(); $numericDataTypes = array('integer', 'float', 'double'); foreach ($use_fields as $field_name) { $field_def = $fields[$field_name]; $value = $obj->attribute($field_name); if ($value === null) { if (!is_array($field_def)) { $exclude_fields[] = $field_name; } else { if (array_key_exists('default', $field_def) && ($field_def['default'] !== null || $field_name == 'data_int' && array_key_exists('required', $field_def) && $field_def['required'] == false)) { $obj->setAttribute($field_name, $field_def['default']); } else { //if ( in_array( $field_def['datatype'], $numericDataTypes ) $exclude_fields[] = $field_name; } } } if (strlen($value) == 0 && is_array($field_def) && in_array($field_def['datatype'], $numericDataTypes) && array_key_exists('default', $field_def) && ($field_def['default'] === null || is_numeric($field_def['default']))) { $obj->setAttribute($field_name, $field_def['default']); } if ($value !== null && $field_def['datatype'] === 'string' && array_key_exists('max_length', $field_def) && $field_def['max_length'] > 0) { $obj->setAttribute($field_name, $db->truncateString($value, $field_def['max_length'], $field_name)); } $bindDataTypes = array('text'); if ($db->bindingType() != eZDBInterface::BINDING_NO && $db->countStringSize($value) > 2000 && is_array($field_def) && in_array($field_def['datatype'], $bindDataTypes)) { $boundValue = $db->bindVariable($value, $field_def); // $obj->setAttribute( $field_name, $value ); $doNotEscapeFields[] = $field_name; $changedValueFields[$field_name] = $boundValue; } } $key_conds = array(); foreach ($keys as $key) { $value = $obj->attribute($key); $key_conds[$key] = $value; } unset($value); $important_keys = $keys; if (is_array($relations)) { // $important_keys = array(); foreach ($relations as $relation => $relation_data) { if (!in_array($relation, $keys)) { $important_keys[] = $relation; } } } if (count($important_keys) == 0 && !$useFieldFilters) { $insert_object = true; } else { if (!$insert_object) { $rows = eZPersistentObject::fetchObjectList($def, $keys, $key_conds, array(), null, false, null, null); if (count($rows) == 0) { /* If we only want to update some fields in a record * and that records does not exist, then we should do nothing, only return. */ if ($useFieldFilters) { return; } $insert_object = true; } } } if ($insert_object) { // Note: When inserting we cannot hone the $fieldFilters parameters $use_fields = array_diff(array_keys($fields), $exclude_fields); $use_field_names = $use_fields; if ($db->useShortNames()) { $use_short_field_names = $use_field_names; eZPersistentObject::replaceFieldsWithShortNames($db, $fields, $use_short_field_names); $field_text = implode(', ', $use_short_field_names); unset($use_short_field_names); } else { $field_text = implode(', ', $use_field_names); } $use_values_hash = array(); $escapeFields = array_diff($use_fields, $doNotEscapeFields); foreach ($escapeFields as $key) { $value = $obj->attribute($key); $field_def = $fields[$key]; if ($field_def['datatype'] == 'float' || $field_def['datatype'] == 'double') { if ($value === null) { $use_values_hash[$key] = 'NULL'; } else { $use_values_hash[$key] = sprintf('%F', $value); } } else { if ($field_def['datatype'] == 'int' || $field_def['datatype'] == 'integer') { if ($value === null) { $use_values_hash[$key] = 'NULL'; } else { $use_values_hash[$key] = sprintf('%d', $value); } } else { // Note: for more colherence, we might use NULL for sql strings if the php value is NULL and not an empty sring // but to keep compatibility with ez db, where most string columns are "not null default ''", // and code feeding us a php null value without meaning it, we do not. $use_values_hash[$key] = "'" . $db->escapeString($value) . "'"; } } } foreach ($doNotEscapeFields as $key) { $use_values_hash[$key] = $changedValueFields[$key]; } $use_values = array(); foreach ($use_field_names as $field) { $use_values[] = $use_values_hash[$field]; } unset($use_values_hash); $value_text = implode(", ", $use_values); $sql = "INSERT INTO {$table} ({$field_text}) VALUES({$value_text})"; $db->query($sql); if (isset($def["increment_key"]) && is_string($def["increment_key"]) && !($obj->attribute($def["increment_key"]) > 0)) { $inc = $def["increment_key"]; $id = $db->lastSerialID($table, $inc); if ($id !== false) { $obj->setAttribute($inc, $id); } } } else { $use_fields = array_diff(array_keys($fields), array_merge($keys, $exclude_fields)); if (count($use_fields) > 0) { // If we filter out some of the fields we need to intersect it with $use_fields if (is_array($fieldFilters)) { $use_fields = array_intersect($use_fields, $fieldFilters); } $use_field_names = array(); foreach ($use_fields as $key) { if ($db->useShortNames() && is_array($fields[$key]) && array_key_exists('short_name', $fields[$key]) && strlen($fields[$key]['short_name']) > 0) { $use_field_names[$key] = $fields[$key]['short_name']; } else { $use_field_names[$key] = $key; } } $field_text = ""; $field_text_len = 0; $i = 0; foreach ($use_fields as $key) { $value = $obj->attribute($key); if ($fields[$key]['datatype'] == 'float' || $fields[$key]['datatype'] == 'double') { if ($value === null) { $field_text_entry = $use_field_names[$key] . '=NULL'; } else { $field_text_entry = $use_field_names[$key] . "=" . sprintf('%F', $value); } } else { if ($fields[$key]['datatype'] == 'int' || $fields[$key]['datatype'] == 'integer') { if ($value === null) { $field_text_entry = $use_field_names[$key] . '=NULL'; } else { $field_text_entry = $use_field_names[$key] . "=" . sprintf('%d', $value); } } else { if (in_array($use_field_names[$key], $doNotEscapeFields)) { $field_text_entry = $use_field_names[$key] . "=" . $changedValueFields[$key]; } else { $field_text_entry = $use_field_names[$key] . "='" . $db->escapeString($value) . "'"; } } } $field_text_len += strlen($field_text_entry); $needNewline = false; if ($field_text_len > 60) { $needNewline = true; $field_text_len = 0; } if ($i > 0) { $field_text .= "," . ($needNewline ? "\n " : ' '); } $field_text .= $field_text_entry; ++$i; } $cond_text = eZPersistentObject::conditionText($key_conds); $sql = "UPDATE {$table} SET {$field_text}{$cond_text}"; $db->query($sql); } } $obj->setHasDirtyData(false); }