Beispiel #1
0
session_start();
// Checklist
require_once LIB . '/checklist.php';
// Instanciation des classes nécessaires au framework
new lang('fr');
new debug(QUERYTIMER);
/**
 * Page manager
 * @var page
 */
$page;
// Initialisation de la page
if (PAGE_LOADER) {
    $page = new page();
}
// Implantation de tous les plugins
debug::timer('Loading plugins');
$dir = opendir(PLUGIN . '/');
while ($file = readdir($dir)) {
    if ($file != "." && $file != "..") {
        if (preg_match('#^function.([\\w]+).php$#', $file, $match)) {
            // Simple fonction
            if (!function_exists($match[1])) {
                require_once PLUGIN . '/' . $file;
            }
        }
    }
}
closedir($dir);
unset($dir);
register_shutdown_function("fatalError");
 /**
  * Execute query and collect results
  *
  * @access public
  * @param mixed $req SQL string to execute
  * @return void
  */
 public function sql($req)
 {
     // On vérifie que jusque là, tout se passe bien
     if (DBHOST && !$this->error) {
         try {
             $queryStart = microtime(true);
             if ($this->content['select']) {
                 // cache category - file prefix
                 $cachePref = $this->cache === true ? '' : md5('prefix' . $this->cache);
                 // Cache verification
                 if ($this->cache) {
                     // Already cached
                     $file = CACHE . '/sql/' . $cachePref . md5($req) . '.cache';
                     $this->cached = false;
                     // Cache exists and not too old
                     if (file_exists($file) && filemtime($file) > time() - SQLCACHETIME) {
                         $this->cached = true;
                     }
                 }
                 if (!$this->cached) {
                     $return = $this->bdd->query($req);
                     $return->setFetchMode(PDO::FETCH_ASSOC);
                     $results = $return->fetchAll();
                     // Must caching the request
                     if ($this->cache) {
                         $fileName = CACHE . '/sql/' . $cachePref . md5($req) . '.cache';
                         $file = fopen($fileName, 'w+');
                         fwrite($file, serialize($results));
                         fclose($file);
                     }
                 } else {
                     $results = unserialize(file_get_contents(CACHE . '/sql/' . $cachePref . md5($req) . '.cache'));
                 }
                 if ($this->cache) {
                     $this->cacheHash = $cachePref . md5($req);
                 }
                 // On compte le nombre d'occurence trouvée
                 $this->count = count($results);
                 // On enregistre les résultats
                 $this->results = $results;
             } else {
                 // On récupère le nombre d'occurence touchée par la requête
                 $return = $this->bdd->exec($req);
                 $this->count = $return;
             }
             $queryEnd = microtime(true);
             if (!$this->cached && debug::$timeQueries) {
                 // send data to timer
                 $nb = self::$queryNumber;
                 $a = '<a href="#debugQuery' . $nb . '" onclick="$(\'#debugSQLContent\').show();">';
                 debug::timer($a . 'Query ' . $nb . '</a>', true);
             }
             debug::sql($req, $this->count, $this->cached, $this->cache, $queryEnd - $queryStart);
             return true;
         } catch (Exception $error) {
             debug::error("SQL", $error->getMessage() . "<br />" . $req, __FILE__, __LINE__);
             $this->error = true;
             return false;
         }
     } else {
         return false;
     }
 }
Beispiel #3
0
 /**
  * Get the HTML for the debugger, and add the CSS and JS to the response
  *
  * @param array $elts
  * @return string
  */
 public static function debugger(array $elts = null)
 {
     if (is_null($elts)) {
         debug::timer('nyro');
         debug::timer('nyroRender');
         return debug::debugger(array('timing' => array('Timing', debug::timer(), 'time'), 'included' => array('Included Files', get_included_files(), array('name' => 'code_red', 'type' => 'script')), 'session' => array('Session vars', $_SESSION, 'shield'), 'db_queries' => array('DB Queries', db::log(), 'database'), 'consts' => array('Constants', array_reverse(get_defined_constants(true), true), array('name' => 'gear', 'type' => 'script')), 'request' => array('Request', request::get(), array('name' => 'right', 'type' => 'arrow')), 'cookies' => array('Cookies', $_COOKIE, array('name' => 'gray', 'type' => 'user')), 'get' => array('Get', $_GET, array('name' => 'show', 'type' => 'tag')), 'post' => array('Post', $_POST, array('name' => 'green', 'type' => 'tag')), 'files' => array('Files', $_FILES, array('name' => 'orange', 'type' => 'tag')), 'response' => array('Response', array('Headers' => response::getInstance()->getHeader(), 'Included Files' => response::getInstance()->getIncFiles()), array('name' => 'right', 'type' => 'arrow'))));
     }
     if (request::get('out') != 'html') {
         return;
     }
     $menu = array();
     $content = array();
     $close = utils::getIcon(array('name' => 'cross', 'type' => 'default', 'attr' => array('class' => 'close', 'alt' => 'Close')));
     foreach ($elts as $k => $v) {
         $icon = array_key_exists(2, $v) ? utils::getIcon(is_array($v[2]) ? $v[2] : array('name' => 'show', 'type' => $v[2])) : null;
         $menu[] = '<a rel="' . $k . '">' . $icon . $v[0] . '</a>';
         $tmp = '<div class="debugElt" id="' . $k . '" style="display: none;">' . $close . '<h2>' . $icon . $v[0] . '</h2>';
         if (is_array($v[1])) {
             if (is_numeric(key($v[1])) && !is_array($v[1])) {
                 $tmp .= '<ol><li>' . implode('</li><li>', $v[1]) . '</li></ol>';
             } else {
                 $tmp .= debug::trace($v[1]);
             }
         } else {
             $tmp .= $v[1];
         }
         $tmp .= '</div>';
         $content[] = $tmp;
     }
     $resp = response::getInstance();
     return '<div id="nyroDebugger">' . $resp->getIncludeTagFile('js', 'debug') . $resp->getIncludeTagFile('css', 'debug') . '<ul><li id="close">' . $close . '</li><li>' . implode('</li><li>', $menu) . '</li></ul>' . implode("\n", $content) . '</div>';
 }
Beispiel #4
0
	protected function analyse() {
		$this->isSource = TRUE;
		// collect informations from all classes
		foreach(array_merge(array($this->sourceDir), $this->libDirs) as $dir) {
			foreach(Finder::findFiles("*.php")->from($dir)->exclude($this->ignoredDirs) as $fileInfo) {
				debug::timer($fileInfo->getFilename());
				$this->parseFile($fileInfo->getPath() . "/" . $fileInfo->getFilename());
				$this->onOutput(self::OI_FILE_ANALYSED, array(
					self::FILE => $fileInfo->getFilename(),
					self::TIME => debug::timer($fileInfo->getFilename()),
				));
			}

			$this->isSource = FALSE;
		}
	}
Beispiel #5
0
	/**
	 * Website main
	 */
	public static function main() {

		define('NYROVERSION', '0.2');
		
		$globalContent = null;
		$globalVars = null;
		$cacheInst = null;
		$cacheInstVars = null;

		try {
			self::init();

			$resp = response::getInstance();
			self::$cfg->overload(__CLASS__.'Response');
			
			if (self::$cfg->globalCache && !request::isPost() && count($_GET) == 0 && $resp->canGlobalCache()) {
				$prm = is_array(self::$cfg->globalCache) ? self::$cfg->globalCache : array();
				$cacheInst = cache::getInstance(array_merge(array('serialize'=>false), $prm));
				$id = str_replace('/', '._.', '/'.request::get('request')).(request::isAjax() ? '-ajax' : '');
				$cacheInst->get($globalContent, array(
					'id'=>$id
				));
				$cacheInstVars = cache::getInstance(array_merge(array('serialize'=>true), $prm));
				$cacheInstVars->get($globalVars, array(
					'id'=>$id.'-vars'
				));
			}
			if (is_null($globalContent)) {
				request::execModule();
				if (DEV) {
					debug::timer('nyroProcess');
					debug::timer('nyroRender');
				}
				$resp->setContent(request::publishModule());
			}
		} catch (module_exception $e) {
			session::setFlash('nyroError', 'MODULE or ACTION NOT FOUND<br />'.self::handleError($e));
			$resp->error(null, 404);
		} catch (nException $e) {
			session::setFlash('nyroError', self::handleError($e));
			$resp->error(null, 500);
		} catch (PDOException $e) {
			session::setFlash('nyroError', self::handleError($e));
			$resp->error(null, 500);
		} catch (Exception $e) {
			session::setFlash('nyroError', self::handleError($e));
			$resp->error(null, 500);
		}

		try {
			factory::saveCache();

			if ($cacheInst) {
				if ($globalContent) {
					$resp->setVarsFromGlobalCache($globalVars);
					echo $globalContent;
				} else {
					$globalVars = $resp->getVarsForGlobalCache();
					$globalContent = $resp->send();
					$cacheInst->save();
					$cacheInstVars->save();
					echo $globalContent;
				}
			} else {
				echo $resp->send();
			}
		} catch (Exception $e) {
			echo debug::trace($e);
		}
	}
Beispiel #6
0
<?php

define('PAGE_LOADER', true);
require_once '../config.php';
// Chargement des configurations
require_once LIB . '/init.php';
// Initialisation du Framework
// Inclusion par défaut des plugins
$session = new session();
// Plugin session
// Inclusion des fichiers statiques nécéssaires à SnakePHP
$page->pushCSS('snakephp/bootstrap');
$page->pushJS('snakephp/jquery');
$page->pushJS('snakephp/bootstrap');
// Inclusion des fichiers personnalisés
$page->pushCSS('global');
$page->pushJS('script');
// Initalisation du premier dispatcher
debug::timer('General dispatcher');
include $page->dispatcher("/");
// Assignation final au template
$page->template('page', $page);
$page->template('save', $_SESSION['save']);
$page->template('message', $_SESSION['message']);
// Génération du template
$page->display('template');
// Nettoyage des sessions et des variables
$page->clear();
exit;
 /**
  * Display page according to a template. Path is relative to /app/template/
  * @param String $template[optional] path to template - default: template
  * @return void 
  */
 public function display($template = false)
 {
     if (!$template) {
         $template = $this->templateTPL;
     }
     $file = TEMPLATE . '/' . $template . ".tpl";
     debug::timer('Loading template "' . $template . '.tpl"');
     $template = new template($file);
     foreach ($this->assign as $key => $value) {
         $template->assign($key, $value);
     }
     $template->display(true);
 }