public function testRecordCallsLoadIfAnAttributeWasNotSetYet()
 {
     $record = new Record(array('id' => 4), $this->dao, TRUE);
     $this->dao->expects($this->any())->method('getAttributes')->will($this->returnValue(array('id' => Dao::INT, 'name' => Dao::STRING)));
     $this->dao->expects($this->once())->method('getData')->with(array('id' => 4))->will($this->returnValue(array('id' => 4, 'name' => 'Test')));
     self::assertEquals('Test', $record->get('name'));
     self::assertEquals('Test', $record->get('name'));
     // Checking it doesn't load twice
 }
Exemple #2
0
 /**
  * /
  * @param  Record $record [description]
  * @return [type]         [description]
  */
 public function removeMeta(Record $record)
 {
     $item_name = $record->get('item_name');
     $item_id = $record->get('item_id');
     $key = $record->get('key');
     if (!is_string($item_name) || !is_int($item_id) || !is_string($key)) {
         throw new \Exception("Invalid input type", 1);
     }
     $sql = "DELETE FROM metadata WHERE item_name=:item_name AND item_id=:item_id AND key=:key";
     $result = $this->db->run($sql, array('item_name' => $item_name, 'item_id' => $item_id, 'key' => $key));
     return $result;
 }
Exemple #3
0
 /**
  * /
  * @param  Record $record [description]
  * @return [type]         [description]
  */
 public function removeAllAttachments(Record $record)
 {
     $id = $record->get('id');
     $item_name = $record->get('item_name');
     if (!is_int($id) || !is_string($item_name)) {
         throw new \Exception("Invalid input type", 1);
     }
     $bind = array('group_name' => $this->slug, 'group_id' => $id, 'item_name' => $item_name);
     $sql = "DELETE FROM attachments WHERE group_name=:group_name, group_id=:group_id, item_name=:item_name";
     $result = $this->db->run($sql, $bind);
     return $result;
 }
 /**
  * Returns a DaoIterator for a specific reference.
  * A DataSource can directly return the DataHash, so it doesn't have to be fetched.
  *
  * @param Record $record
  * @param string $attribute The attribute it's being accessed on
  * @return DaoIterator
  */
 public function getReferenced($record, $attribute)
 {
     if ($data = $record->getDirectly($attribute)) {
         if (is_array($data)) {
             if (count($data) === 0 || is_array(reset($data))) {
                 // The data hash is an array, either empty, or containing the hashes.
                 return new DaoHashListIterator($data, $this->getForeignDao());
             } elseif (is_int(reset($data)) && ($foreignKey = $this->getForeignKey())) {
                 // The data hash is an array containing the ids, and there is a
                 // foreign key to link them to.
                 return new DaoKeyListIterator($data, $this->getForeignDao(), $foreignKey);
             }
         }
         Log::warning(sprintf('The data hash for `%s` was set but incorrect.', $attribute));
         return new DaoHashListIterator(array(), $this->getForeignDao());
     } else {
         // Get the list of ids
         $localKey = $this->getLocalKey();
         $foreignKey = $this->getForeignKey();
         if ($localKey && $foreignKey) {
             $localValue = $record->get($localKey);
             return new DaoKeyListIterator($localValue ? $localValue : array(), $this->getForeignDao(), $foreignKey);
         }
         return new DaoKeyListIterator(array(), $this->getForeignDao(), $foreignKey);
     }
 }
 /**
  * Returns a DaoIterator for a specific reference.
  * A DataSource can directly return the DataHash, so it doesn't have to be fetched.
  *
  * @param Record $record
  * @param string $attribute The attribute it's being accessed on
  * @return DaoIterator
  */
 public function getReferenced($record, $attribute)
 {
     $foreignDao = $this->getForeignDao();
     $joinDao = $this->getJoinDao();
     // Get all joins, that point to the local key.
     $joins = $joinDao->getIterator($this->applyFilter(array($this->getJoinToLocalKey() => $record->get($this->getLocalKey()))));
     // Extract an array of foreign keys.
     $foreignKeys = array();
     foreach ($joins as $join) {
         $foreignKeys[] = $join->get($this->getJoinToForeignKey());
     }
     // And return the key list iterator.
     return new DaoKeyListIterator($foreignKeys, $this->getForeignDao(), $this->getForeignKey());
 }
 /**
  * Returns a DaoIterator for a specific reference.
  * A DataSource can directly return the DataHash, so it doesn't have to be fetched.
  *
  * @param Record $record
  * @param string $attribute The attribute it's being accessed on
  * @return DaoIterator
  */
 public function getReferenced($record, $attribute)
 {
     return $this->getForeignDao()->find(array($this->getForeignKey() => $record->get($this->getLocalKey())));
 }
Exemple #7
0
 function getData($field = null)
 {
     return $this->escape(parent::get($field));
 }