/** * @param array attributes key for get. * @return array */ public function getEavAttributes($attributes = array()) { // Get all attributes if not specified. if (empty($attributes)) { $attributes = $this->getSafeAttributesArray(); } // Values array. $values = array(); // Queue for load. $loadQueue = new CList(); foreach ($attributes as $attribute) { // Check is safe. if ($this->hasSafeAttribute($attribute)) { $values[$attribute] = $this->attributes->itemAt($attribute); // If attribute not set and not load, prepare array for loaded. if (!$this->preload && $values[$attribute] === NULL) { $loadQueue->add($attribute); } } } // If array for loaded not empty, load attributes. if (!$this->preload && $loadQueue->count() > 0) { $this->loadEavAttributes($loadQueue->toArray()); foreach ($loadQueue as $attribute) { $values[$attribute] = $this->attributes->itemAt($attribute); } } // Delete load queue. unset($loadQueue); // Return values. return $values; }