Example #1
0
<?php

/**
 * @package FWork
 * @subpackage index.php
 * @version 1.0b
 * @author Maksim O. Gusev maxgusev@gmail.com
 * @copyright 2016 Maksim O. Gusev 
 * 
 */
/* We determine our location */
$current_folder = realpath(".");
$current_folder = rtrim($current_folder, '/') . '/';
/* Check the availability and accessibility of a base FWork class */
$fwork_core_class_def = $current_folder . "fwork/system/fwork.php";
if (is_readable($fwork_core_class_def) == FALSE) {
    exit("Error! Execution is interrupted! Cant read FWork core class definition: " . $fwork_core_class_def);
}
/* Load FWork core class definition */
require_once $fwork_core_class_def;
/* Call FWork system */
$fwork = new fwork($current_folder);
$fwork->run();
Example #2
0
 /**
  * 
  */
 public function run()
 {
     /* Try to create logger */
     $log_file = $this->fwork_log_path . "fwork.log";
     try {
         $this->logger = new logger($log_file, log_level::ERROR, get_class($this));
     } catch (Exception $e) {
         $this->terminate($e);
     }
     /* Try to open log file */
     try {
         $this->logger->open();
     } catch (Exception $e) {
         $this->terminate($e);
     }
     $this->logger->write_message("I started! Version " . $this->version, log_level::NOTICE);
     /* Try to load config */
     $this->config = new config($this->fwork_config_path);
     $this->logger->write_message("Load config \"router\"", log_level::NOTICE);
     $this->config->load('router');
     $this->logger->write_message("Get from config default_controller: " . $this->config->item('default_controller'), log_level::NOTICE);
     $this->logger->write_message("Get from config default_method: " . $this->config->item('default_method'), log_level::NOTICE);
     $this->logger->write_message("Get from config 404_controller: " . $this->config->item('404_controller'), log_level::NOTICE);
     $this->logger->write_message("Load config \"site\"", log_level::NOTICE);
     $this->config->load('site');
     $this->logger->write_message("Get from config base_url: " . $this->config->item('base_url'), log_level::NOTICE);
     /* Validate url */
     fwork::$base_url = $this->config->item('base_url');
     $full_url = $this->config->item('base_url') . $_SERVER['REQUEST_URI'];
     $this->logger->write_message("Try to validate full url: " . $full_url, log_level::NOTICE);
     $full_url_is_valid = filter_var($full_url, FILTER_VALIDATE_URL);
     if ($full_url_is_valid == FALSE) {
         $this->logger->write_message("Full url is not valid", log_level::WARNING);
     }
     /* Define controller and method name */
     $c_name = $this->config->item('default_controller');
     $m_name = $this->config->item('default_method');
     /* Parse url */
     $this->logger->write_message("Try to parse url", log_level::NOTICE);
     $url_cut = explode("?", $_SERVER['REQUEST_URI'], 2)[0];
     $url_parts = explode('/', $url_cut);
     $this->logger->write_message("Url without GET variables: " . $url_cut, log_level::NOTICE);
     /* Convert URL parts to lower chars */
     foreach ($url_parts as $key => $item) {
         $url_parts[$key] = mb_strtolower($item);
     }
     /* Parse url parts */
     if (count($url_parts) < 2 || count($url_parts) > 3) {
         $c_name = $this->config->item('404_controller');
     }
     if (count($url_parts) == 2) {
         if (strcmp($url_parts[1], '') !== 0) {
             $m_name = $url_parts[1];
         }
     }
     if (count($url_parts) == 3) {
         $c_name = $url_parts[1];
         if (strcmp($url_parts[2], '') !== 0) {
             $m_name = $url_parts[2];
         }
     }
     $this->logger->write_message("Parsed controller from url: " . $c_name, log_level::NOTICE);
     $this->logger->write_message("Parsed method from url: " . $m_name, log_level::NOTICE);
     /* Try to load controller */
     $c_class_file = fwork::$app_path . 'controllers/' . $c_name . '.php';
     if (file_exists($c_class_file)) {
         $this->logger->write_message("Controller file found. Require filename: " . $c_class_file, log_level::NOTICE);
         require_once $c_class_file;
     } else {
         $this->logger->write_message("Controller file not found. Filename: " . $c_class_file, log_level::WARNING);
         $this->logger->write_message("Try to find 404 controller.", log_level::NOTICE);
         /* Try to route to 404 */
         $c_name = $this->config->item('404_controller');
         $c404_class_file = fwork::$app_path . 'controllers/' . $c_name . '.php';
         if (file_exists($c404_class_file)) {
             $this->logger->write_message("Controller 404 file found. Require filename: " . $c404_class_file, log_level::NOTICE);
             require_once $c404_class_file;
         } else {
             $this->logger->write_message("Controller 404 file not found. Nothing to do.", log_level::WARNING);
             exit(1);
         }
     }
     $c_obj = new $c_name($m_name);
     $this->logger->write_message("I finished work", log_level::NOTICE);
 }