Skip to content

Commit

Permalink
Fixes in named runs.
Browse files Browse the repository at this point in the history
  • Loading branch information
KrisJordan committed Nov 13, 2008
1 parent bce1fc1 commit 6e76ea7
Show file tree
Hide file tree
Showing 6 changed files with 66 additions and 26 deletions.
2 changes: 2 additions & 0 deletions apps/blog/controllers/PostsController.class.php
Expand Up @@ -7,6 +7,8 @@
*/
class PostsController extends Controller {

protected $formats = array(Formats::xhtml, Formats::json);

/** !Route GET, /blog/ */
function home() {

Expand Down
7 changes: 6 additions & 1 deletion lib/recess/framework/controllers/Controller.class.php
Expand Up @@ -18,6 +18,9 @@ abstract class Controller extends RecessClass {
protected $request;
protected $headers;

/** The formats/content-types which a controller responds to. */
protected $formats = array(Formats::xhtml);

public static function getViewClass($class) {
return self::getClassDescriptor($class)->viewClass;
}
Expand Down Expand Up @@ -112,7 +115,9 @@ final function serve(Request $request) {
$response->meta->viewPrefix = $descriptor->viewPrefix;
$response->data = get_object_vars($this);
if(is_array($this->headers)) { foreach($this->headers as $header) $response->addHeader($header); }

unset($response->data['request']);
unset($response->data['headers']);
unset($response->data['formats']);
return $response;
}

Expand Down
12 changes: 12 additions & 0 deletions lib/recess/framework/views/NativeView.class.php
Expand Up @@ -12,6 +12,18 @@ class NativeView extends AbstractView {
* @abstract
*/
protected function render(Response $response) {
switch($response->request->format) {
case Formats::json:
foreach($response->data as $key => $value) {
if($value instanceof ModelSet) {
$response->data[$key] = $value->toArray();
}
}
print json_encode($response->data);
exit;
default:
}

extract($response->data);
include_once($response->meta->viewDir . $response->meta->viewName . '.php');
}
Expand Down
64 changes: 40 additions & 24 deletions lib/recess/lang/Library.class.php
Expand Up @@ -41,48 +41,60 @@ class Library {

static function beginNamedRun($name) {
if(!self::$useNamedRuns || !isset($_ENV['dir.temp'])) return;

self::$namedRun = $name;
if(!isset(self::$namedRuns[$name])) {
self::$namedRuns[$name] = array();
} else {
if(!is_array(self::$namedRuns[$name])) {
self::$namedRuns[$name] = array();
}
}

$namedRunFile = $_ENV['dir.temp'] . self::NAMED_DIRS_PATH . $name . self::PHP_EXTENSION;
if(file_exists($namedRunFile)) {
self::$inNamedRunImport = true;
include_once($namedRunFile);
self::$inNamedRunImport = false;
}
self::$namedRun = $name;
self::$namedRuns[$name] = array();
}

static function namedRunMissed($class) {
if($class != 'Smarty')
self::$namedRuns[self::$namedRun][] = $class;
}

static function persistNamedRuns() {
static function persistNamedRuns() {
if(!isset($_ENV['dir.temp'])) return;
$tempDir = $_ENV['dir.temp'];
foreach(self::$namedRuns as $namedRun => $missedClasses) {
$namedRunDir = $_ENV['dir.temp'] . self::NAMED_DIRS_PATH;
$namedRunFile = $namedRunDir . $namedRun . self::PHP_EXTENSION;
if(file_exists($namedRunFile)) { // append to
$file = fopen($namedRunFile,'a');
} else {
if(!file_exists($namedRunDir)) {
mkdir($namedRunDir);
}
$file = fopen($namedRunFile,'w');
}

foreach($missedClasses as $class) {
$classInfo = self::$classesByClass[$class];
$fullName = $classInfo[self::NAME];
$path = self::$paths[$classInfo[self::PATH]];
$fileName = str_replace(self::dotSeparator,self::pathSeparator, $fullName) . '.class.php';
$classFile = $path . $fileName;
$code = file_get_contents($classFile);
// $code = preg_replace('/\nLibrary::import\(.*/','',file_get_contents($classFile));
fwrite($file, $code);
if(!empty($missedClasses)) {
if(file_exists($namedRunFile)) { // append to
$file = fopen($namedRunFile,'a');
echo 'here';
} else {
if(!file_exists($namedRunDir)) {
mkdir($namedRunDir);
}
$file = fopen($namedRunFile,'w');
}

foreach($missedClasses as $class) {
$classInfo = self::$classesByClass[$class];
$fullName = $classInfo[self::NAME];
$path = self::$paths[$classInfo[self::PATH]];
$fileName = str_replace(self::dotSeparator,self::pathSeparator, $fullName) . '.class.php';
$classFile = $path . $fileName;
$code = file_get_contents($classFile);
// $code = preg_replace('/\nLibrary::import\(.*/','',file_get_contents($classFile));
fwrite($file, $code);
}

fclose($file);
}

fclose($file);
}
}

Expand All @@ -98,9 +110,11 @@ static function init() {

self::$dirtyPaths = false;
self::$dirtyClasses = false;

}

static function shutdown() {

if(self::$dirtyPaths) {
Cache::set(self::PATHS_CACHE_KEY, self::$paths);
}
Expand All @@ -109,7 +123,7 @@ static function shutdown() {
Cache::set(self::CLASSES_X_CLASS_CACHE_KEY, self::$classesByClass);
Cache::set(self::CLASSES_X_FULL_CACHE_KEY, self::$classesByFull);
}

self::persistNamedRuns();
}

Expand Down Expand Up @@ -166,7 +180,9 @@ static function classExists($fullName) {
$class = self::$classesByFull[$fullName];

if(class_exists($class, false)) return true;


echo $fullName . '<br />';

$pathIndex = self::$classesByClass[$class][self::PATH];
$file = str_replace(self::dotSeparator,self::pathSeparator, $fullName) . '.class.php';
if($pathIndex == -1) {
Expand Down
5 changes: 5 additions & 0 deletions lib/recess/sources/db/pdo/PdoDataSet.class.php
Expand Up @@ -40,6 +40,11 @@ public function toSql() {
return $this->sqlBuilder->select();
}

public function toArray() {
$this->realize();
return $this->results;
}

public function count() { return iterator_count($this); }

protected $index = 0;
Expand Down
2 changes: 1 addition & 1 deletion public/recess-config.php
Expand Up @@ -4,7 +4,7 @@

Config::$mode = Config::DEVELOPMENT;

Config::$useTurboSpeed = false; // I wanna go FAST!
Config::$useTurboSpeed = true; // I wanna go FAST!

Config::$cacheProviders
= array( 'Apc',
Expand Down

0 comments on commit 6e76ea7

Please sign in to comment.