예제 #1
0
	function __get($var) {
		/* 
		ORM TODO:
		- is this where i tell if  i have a m2m relation ship?
			- does it make sense for Forigen Keys to exist like this?
				- not really, if its how m2m relationships are defined.
				
			- do foreign keys always have a field in the current model?
				- yes.
				
			- if it is a forigen key do i only need to return one sweet row item?
				- yes.
			- do m2m always need to return an array?
				- yes.
			- what advantages do i have for detecting m2m relationships
				- the differnces between fk and m2m code?
			- what does the pk mean?
				- //? the pk is used so you dont get an array of all the same item.
					-if it is the same item it passes it to the sweetRow obj
				- do you need it on m2m?
					- shouldn't matter.
					?no
					?not always.
						- the comments example on the pages models proves that it can be avaible.
				- do you need it on fk?
					yes.
						//in order for a fk to point to something, that something needs a pk.
						
					// for the most part the fk is gonna be the same for each row.
						- when is it differnent?
							//if its differnt does that mean there are 2 items?
								//this shouldn't be possible correct?
							//?on m2m?
			
		- how do i handle backwards relationships?
			- how were they defined before?
			- how were they handeled before?
			
			- do they even need to be defined?
				-yes.
			
			- use cases for backwards relationships?
				- m2m relationships are backwards fk relationships. they already work.
		*/
		//)
		if(!empty($this->__pull) && ( isset($this->__pull[$var]) || in_array($var, $this->__pull)) ) {
			
			////// KEYS:
			$varL = strlen($var);
/*
			$keys = array_filter(
				array_keys((array)f_first($this->__data)),
				function($k) use($var, $varL) {
					return ($var == substr($k, 0, $varL));
				}
			);
*/
			$keys = array();
			foreach(array_keys((array)f_first($this->__data)) as $k) {
				if($var == substr($k, 0, $varL)) {
					$keys[] = $k;
				}
			}
			
			//D::log($keys, 'keys');
			
			$varL++;
			$pull = isset($this->__pull[$var]) ? $this->__pull[$var] : array();
			//!meh			
			$pullRel = $this->__model->relationships[$var];
			if(is_string($fKey = f_first(array_keys($pullRel)) )) {
				//m2m
				
				//$model = SweetFramework::getClass('model', f_first($pullRel[$fKey]));
				$model = f_first($pullRel[$fKey]);
				$model = isset($this->__model->__relationships[$model]) ? $this->__model->__relationships[$model] : ($this->__model->__relationships[$model] = SweetFramework::getClass('model', $model));
				
				$returnItems = array();
				
				if(!isset($model->pk)) {
					foreach($this->__data as $row) {
						if(!empty($row)) {
							$item = self::subRow2Item($keys, $row, $varL);
							if(!empty($item)) {
								$returnItems[] = new SweetRow($model, $item, $pull);
							}
						}
					}
				} else {
					foreach($this->__data as $row) {
						if(!empty($row)) {
							$item = self::subRow2Item($keys, $row, $varL);
							if(!empty($item)) {
								if(isset($returnItems[$item[$model->pk]])) {
									f_call(array($returnItems[$item[$model->pk]], 'pass'), array($item));
								} else {
									$returnItems[$item[$model->pk]] = new SweetRow($model, $item, $pull);
								}
							}
						}
					}
				}
				return $returnItems;
			} else {
				//$model = SweetFramework::getClass('model', f_first($pullRel));
				$model = f_first($pullRel);
				$model = isset($this->__model->__relationships[$model]) ? $this->__model->__relationships[$model] : ($this->__model->__relationships[$model] = SweetFramework::getClass('model', $model));
				if(!isset($model->pk)) {
					foreach($this->__data as $row) {
						if(!empty($row)) {
							$item = self::subRow2Item($keys, $row, $varL);
							if(!empty($item)) {
								if(isset($returnItem)) {
									$returnItem->pass($item);
								} else {
									$returnItem = new SweetRow($model, $item, $pull);
								}
							}	
						}
					}
				} else {
					foreach($this->__data as $row) {
						if(!empty($row)) {
							$item = self::subRow2Item($keys, $row, $varL);
							if(!empty($item)) {
								if(isset($returnItem) && $returnItem->{$model->pk} == $item[$model->pk]) {
									$returnItem->pass($item);
								} else {
									$returnItem = new SweetRow($model, $item, $pull);
								}
							}
						}
					}
				}
			}
			return isset($returnItem) ? $returnItem : null;		
		} else if(isset($this->__model->fields[$var])) {
			//basicly this @ is here to make sure you call any field on a SweetRow and it will just return null unless it's been set.
			return !empty($this->__data[0][$var]) ? $this->__data[0][$var] : null;
			//return @f_first($this->__data)->$var;
		}
	}
예제 #2
0
<?php

SweetFramework::getClass('lib', 'Config')->setAll('site', array('name' => 'Sweet-framework', 'prettyUrls' => false, 'url' => 'http://localhost/projects/sweet-framework/?', 'database' => 'default', 'theme' => 'default'));
예제 #3
0
	public static function __callStatic($varName, $values=array()) {
		return SweetFramework::getClass('lib', 'Template')->$varName;
		//f_call(array(, 'get'), $args)
	}
예제 #4
0
	function model($model) {
		if(is_array($model)) {
			return f_last(array_map(f_callable(array($this, 'model')), $model));
		}
		return $this->models->{SweetFramework::className($model)} = SweetFramework::getClass('model', $model);
	}
예제 #5
0
<?
SweetFramework::getClass('lib', 'Config')->setAll('Debug', array(
	'debug' => true,
	'warnings' => true,
	'logfile' => LOC . '/sweet-framework/logs/main.log',
	'growl' => array(
		'host' => 'localhost',
		'password' => ''
	)
));
예제 #6
0
<?php

//location of the mysql db
SweetFramework::getClass('lib', 'Config')->setAll('databases', array('default' => array('driver' => 'My_SQL', 'host' => 'localhost', 'username' => 'sweetie', 'password' => 'password', 'databaseName' => 'sweet-framework')));
<?php

SweetFramework::getClass('lib', 'Config')->setAll('SweetFramework', array('benchMark' => false, 'niceUrls' => false, 'app' => array('folder' => 'app', 'paths' => array('config' => 'settings', 'lib' => 'libs', 'model' => 'models', 'helper' => 'helpers', 'controller' => 'controllers'))));
예제 #8
0
	public static function __callStatic($name, $arguments=array()) {
		return SweetFramework::getClass('model', $name);
	}
예제 #9
0
<?
SweetFramework::getClass('lib', 'Config')->setAll('Session', array(
	'timeout' => 31536000,
	'hashFunction' => 'sha512',
	'cookieSecret' => 'h07rsouY43hSNpNAVvcEKDrasdfasdsdfasedefeeeasx5RjTfrthw49BC6xeGNvw2nI55z1RH',
	'cookieName' => 'sweet-hash',
	'use' => array($_SERVER['REMOTE_ADDR']),
	'sslCookies' => false,
	'tableName' => 'sessions',
	'dataTableName' => 'sessiondata'
));