public static function getBean(RedBean_OODBBean $bean, $typeName, $name = null) { $fieldName = self::getLinkField($typeName, $name); $id = (int) $bean->{$fieldName}; if ($id) { return ZurmoRedBean::load($typeName, $id); } else { return null; } }
/** * @param int $layoutId * @param User $user * @throws NotFoundException */ public static function getByLayoutIdAndUser($layoutId, $user) { assert('is_integer($layoutId) && $layoutId >= 1'); assert('$user instanceof User && $user->id > 0'); $sql = 'select dashboard.id id ' . 'from dashboard, ownedsecurableitem ' . 'where ownedsecurableitem.owner__user_id = ' . $user->id . ' and dashboard.ownedsecurableitem_id = ownedsecurableitem.id ' . ' and layoutid = ' . $layoutId . ' order by layoutId;'; $ids = ZurmoRedBean::getCol($sql); assert('count($ids) <= 1'); if (count($ids) == 0) { if ($layoutId == Dashboard::DEFAULT_USER_LAYOUT_ID) { return Dashboard::setDefaultDashboardForUser($user); } throw new NotFoundException(); } $bean = ZurmoRedBean::load(Dashboard::getTableName(), $ids[0]); assert('$bean === false || $bean instanceof RedBean_OODBBean'); if ($bean === false) { throw new NotFoundException(); } return self::makeModel($bean); }
public function testPDOTypesToShowTheDodginessOfNotBeingAbleToGetNumbersOut() { $wukka = ZurmoRedBean::dispense('wukka'); $wukka->integer = 69; ZurmoRedBean::store($wukka); $id = $wukka->id; unset($wukka); $pdo = new PDO(Yii::app()->db->connectionString, Yii::app()->db->username, Yii::app()->db->password); // Not Coding Standard $statement = $pdo->prepare('select version() as version;'); $statement->execute(); $rows = $statement->fetchAll(); $mysqlVersion = substr($rows[0]['version'], 0, 3); $phpVersion = substr(phpversion(), 0, 5); // These is what we are interested in. They seem to be ignored in // php 5.3 with mysql 5.1, but works in php 5.3.6 & mysql 5.5. // Both are needed to be set false. // Whether it is the newer php version or the newer mysql version // or both together, and at exactly which versions it works is // unknown. That is for some future investigation. $pdo->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false); $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); $wukka = ZurmoRedBean::load('wukka', $id); $statement = $pdo->prepare('select * from wukka;'); $statement->execute(); $rows = $statement->fetchAll(); if (($phpVersion == '5.3.6' || $phpVersion == '5.3.5' || $phpVersion == '5.5.2') && $mysqlVersion == '5.5') { $this->assertEquals('integer', gettype($rows[0]['integer'])); // Good! This is what we want!!! $this->assertEquals('string', gettype($wukka->integer)); // Dodgy!!! } else { $this->assertEquals('string', gettype($rows[0]['integer'])); // Dodgy!!! $this->assertEquals('string', gettype($wukka->integer)); // Dodgy!!! } }
/** * Given a unioned sql statement, make the models for the beans returned. The modelClassName is a column * name that must be in the select part of the sql statement for each unioned select. * @param string $sql * @return array of models */ protected function makeModelsBySql($sql) { assert('is_string($sql)'); $models = array(); $idsAndModelClassNames = ZurmoRedBean::getAll($sql); foreach ($idsAndModelClassNames as $data) { $modelClassName = $data['modelClassName']; $tableName = $modelClassName::getTableName(); $bean = ZurmoRedBean::load($tableName, $data['id']); $models[] = $modelClassName::makeModel($bean, $modelClassName); } return $models; }
public function testCascadedDeleteDoesNotWorkForLinkedBeans() { $member = ZurmoRedBean::dispense('marketinglistmember'); $member->unsubscribed = true; ZurmoRedBean::store($member); $list = ZurmoRedBean::dispense('marketinglist'); $list->name = 'dummy'; ZurmoRedBean::store($list); ZurmoRedBeanLinkManager::link($member, $list); ZurmoRedBean::store($member); $id = $list->id; unset($list); ZurmoRedBean::trash($member); unset($member); $list = ZurmoRedBean::load('marketinglist', $id); $this->assertNotNull($list); // The list is not deleted. }