/**
  * @param Base $Base
  * @param string $table
  */
 public function __construct(SC $Base, $table)
 {
     $this->Base = $Base;
     $this->table = $table;
     $this->escapeChar = $Base->getEscapeQuote();
     $this->fkEnding = $Base->getFkEnding();
     $this->tableClause = "{$this->escapeChar}{$table}{$this->escapeChar}";
     $this->whereClause = '1';
 }
 public function success()
 {
     $this->view->title = 'Налаштування';
     $this->view->alert = 'Налаштування успішно збережено';
     $this->view->data = $this->model->getUserInfo(SC::getSession('id'));
     $this->view->render('userSettings/index');
 }
	public function checkPrivileges($o)
	{
		$username=SC::get('userdata.username');
		if(in_array($username,array('dev1','dev2'))){
			return true;
			
		}
		
		$uid=SC::get('userdata.user_id');
		$dao=DaoFactory::create('user/admin');
		$dao->select('count(user_id) as count');
		$dao->byUserId($uid);
		$rs=$dao->execute();
		if(!$rs->isSuccess())
		{
			throw new CircuitDatabaseException('query admin users failed', $rs);
		}
		$count=$rs->fetchrow(DB_ASSOC);
        
		if($count['count']==0)
		{
	  		$message = "This page is not available under the current configuration, or ";
	      	$message .= "you are not authorized to view this page.";
	      	$o->set('error.message', $message);
	      	$o->set('error.code', GENERAL_MESSAGE);
	      	$o->set('error.title', 'Not Authorized');
	      	$o->set('error.line', __LINE__);
	      	$o->set('error.file', __FILE__);
			return false;
		}
		return true;
	}
 public function getAllUsers()
 {
     $user_id = SC::getCookie('id');
     $u = $this->db->select('tests', 'id,name,date', 'user_id=' . $user_id . '');
     if ($this->db->getCount() != 0) {
         $users = '<div class="table-responsive">';
         $users .= '<table class="table table-condensed table-bordered table-hover">';
         $users .= '<thead><tr class="caption">';
         $caption = array('#', 'Назва тесту', 'Дата створення');
         $cook = SC::getCookie('id');
         foreach ($caption as $k => $v) {
             $users .= '<th  style="text-align: center,width:200px; ">' . $v . '</th>';
         }
         $users .= '</tr></thead>';
         for ($i = 0; $i < sizeof($u); $i++) {
             // if ( $u[$i]['id'] != SC::getCookie ( 'id' ) ) {
             $users .= '<tr>';
             foreach ($u[$i] as $k => $v) {
                 //if ( $k != 'password' && $k != 'date' && $k != 'activateCode' && $k != 'hash' ) {
                 $users .= '<td><a href="' . URL . '?c=testsResult&f=showOne&p=' . $u[$i]['id'] . '">' . $v . '</a></td>';
                 //}
             }
             $users .= '</tr>';
             //}
         }
         $users .= '</table>';
         $users .= '</div>';
     }
     return $users;
 }
 public function checkUserData($login, $password)
 {
     $user = $this->db->select('users', 'id, password, group, date, activate', "`login`='{$login}'");
     if ($this->db->getCount() == 1) {
         $user = $user[0];
     } else {
         return 0;
     }
     /*
      * Якщо користувач не активований, то повідомляємо про це
      */
     if ($user['activate'] == 0) {
         return 2;
     }
     if (Hash::checkHash($password, $user['password'])) {
         $randHash = Hash::getRandomHash();
         SC::setCookie('id', $user['id']);
         SC::setSession('id', $user['id']);
         SC::setCookie('login', $login);
         SC::setSession('login', $login);
         SC::setCookie('group', $user['group']);
         SC::setSession('group', $user['group']);
         SC::setCookie('userHash', $randHash);
         SC::setSession('userHash', $randHash);
         $this->db->update('users', array('hash' => $randHash), "`id`='{$user['id']}'");
         $this->getCountBYDay();
         return 1;
     } else {
         return 0;
     }
 }
 public function getAllUsers()
 {
     $u = $this->db->select_order('pages', 'id,title,url', 'id', 'DESC');
     if ($this->db->getCount() != 0) {
         $users = '<div class="table-responsive">';
         $users .= '<table class="table table-condensed table-bordered table-hover">';
         $users .= '<thead><tr class="caption">';
         $caption = array('#', 'Заголовок', 'URL', 'Дії');
         $cook = SC::getCookie('id');
         foreach ($caption as $k => $v) {
             $users .= '<th  style="text-align: center,width:200px; ">' . $v . '</th>';
         }
         $users .= '</tr></thead>';
         for ($i = 0; $i < sizeof($u); $i++) {
             // if ( $u[$i]['id'] != SC::getCookie ( 'id' ) ) {
             $users .= '<tr>';
             foreach ($u[$i] as $k => $v) {
                 //if ( $k != 'password' && $k != 'date' && $k != 'activateCode' && $k != 'hash' ) {
                 $users .= '<td>' . $v . '</td>';
                 //}
             }
             $users .= '<td>';
             $users .= '<a class="users-info-links" href="?c=managePages&f=edit&p=' . $u[$i]['id'] . '">Редагувати</a><br />';
             $users .= '<a class="users-info-links" href="?c=managePages&f=delete&p=' . $u[$i]['id'] . '">Видалити</a>';
             $users .= '</td>';
             $users .= '</tr>';
             //}
         }
         $users .= '</table>';
         $users .= '</div>';
     }
     return $users;
 }
 public function getAllInfo()
 {
     $u = $this->db->select_order('guestbook', '*', 'id', 'DESC');
     if ($this->db->getCount() != 0) {
         $data = '<div class="table-responsive">';
         $data .= '<table class="table table-condensed table-bordered table-hover">';
         $data .= '<thead><tr class="caption">';
         $caption = array('#', 'Автор', 'Email', 'Текст', 'Дата', 'Відповісти');
         $cook = SC::getCookie('id');
         foreach ($caption as $k => $v) {
             $data .= '<th  style="text-align: center,width:200px; ">' . $v . '</th>';
         }
         $data .= '</tr></thead>';
         for ($i = 0; $i < sizeof($u); $i++) {
             $data .= '<tr>';
             foreach ($u[$i] as $k => $v) {
                 $data .= '<td>' . $v . '</td>';
             }
             $data .= '<td>';
             $data .= '<a class="users-info-links" href="?c=manageGuestBook&f=answer&p=' . $u[$i]['id'] . '&email=' . $u[$i]['email'] . '"> Відповісти</a>';
             $data .= '</td>';
             $data .= '</tr>';
         }
         $data .= '</table>';
         $data .= '</div>';
     }
     return $data;
 }
 public function getAllImagesById($id)
 {
     $u = $this->db->select('images', 'id,title,img', "gallery_id='{$id}' ORDER BY id DESC");
     if ($this->db->getCount() != 0) {
         $data = '<div class="table-responsive">';
         $data .= '<table class="table table-condensed table-bordered table-hover">';
         $data .= '<thead><tr class="caption">';
         $caption = array('#', 'Назва', 'Титульне зображення', 'Дії');
         foreach ($caption as $k => $v) {
             $data .= '<th style="text-align: center">' . $v . '</th>';
         }
         $data .= '</tr></thead>';
         for ($i = 0; $i < sizeof($u); $i++) {
             if ($u[$i]['id'] != SC::getCookie('id')) {
                 $data .= '<tr>';
                 foreach ($u[$i] as $k => $v) {
                     if ($k == "img") {
                         $data .= '<td><img src="public/gal_img/' . $v . '" width="230px" height="180px"></td>';
                     } else {
                         $data .= '<td>' . $v . '</td>';
                     }
                 }
                 $data .= '<td>';
                 $data .= '<a class="users-info-links" href="?c=manageImages&f=edit&p=' . $u[$i]['id'] . '">Редагувати</a><br />';
                 $data .= '<a class="users-info-links" href="?c=manageImages&f=delete&p=' . $u[$i]['id'] . '">Видалити</a>';
                 $data .= '</td>';
                 $data .= '</tr>';
             }
         }
         $data .= '</table>';
         $data .= '</div>';
     }
     return $data;
 }
 public function getTeachers()
 {
     $u = $this->db->select('rozklad_teachers', '*');
     if ($this->db->getCount() != 0) {
         $users = '<div class="table-responsive">';
         $users .= '<table class="table table-condensed table-bordered table-hover">';
         $users .= '<thead><tr class="caption">';
         $caption = array('#', 'Прізвище', 'Ім\'я', 'По-батькові', 'Дії');
         $cook = SC::getCookie('id');
         foreach ($caption as $k => $v) {
             $users .= '<th  style="text-align: center,width:200px; ">' . $v . '</th>';
         }
         $users .= '</tr></thead>';
         for ($i = 0; $i < sizeof($u); $i++) {
             $users .= '<tr>';
             foreach ($u[$i] as $k => $v) {
                 $users .= '<td>' . $v . '</td>';
             }
             $users .= '<td>';
             $users .= '<a class="users-info-links" href="?c=manageRozkladsTeachers&f=edit&p=' . $u[$i]['id'] . '">Редагувати</a><br />';
             $users .= '<a class="users-info-links" href="?c=manageRozkladsTeachers&f=delete&p=' . $u[$i]['id'] . '">Видалити</a>';
             $users .= '</td>';
             $users .= '</tr>';
         }
         $users .= '</table>';
         $users .= '</div>';
     }
     return $users;
 }
 /**
  * Execute
  */
  function execute(&$observer)
  {
      
      // MOD RJH
      // Modification Date: 11-18-2004
      // Add Tracking for all actions into a single consolidated Admin Log Table
      // using Sushi to store data
      // TRACKING
      // ID (pk), USER ID(ind), IP(ind), datetime, request page, POST/GET
      if( preg_match("/^10./",$_SERVER['REMOTE_ADDR']) )  return TRUE;
     
      $GAIALOG = serialize(array($_GET,$_POST));
      $dao_logging =& DaoFactory::create('admincpanellog.insert');
      $dao_logging->setUserId(SC::get('userdata.user_id'));
      $dao_logging->setUsername(SC::get('userdata.username'));
      $dao_logging->setUserIp($_SERVER['REMOTE_ADDR']);
      $dao_logging->setDatetime(SC::get('board_config.time_now'));
      $dao_logging->setRequestFilename($_SERVER['SCRIPT_NAME']);
      $dao_logging->setRequestData($GAIALOG);
      $rs =& $dao_logging->execute();
      if(!$rs->isSuccess()) 
      {
          $observer->set('error.message', "Unable to connect to the database, please try again later.");
          $observer->set('error.title', 'Database Error');
          $observer->set('error.code', GENERAL_ERROR);
          $observer->set('error.line', __LINE__);
          $observer->set('error.file', __FILE__);
          return FALSE;
      }
      
      return TRUE;
      
  }
示例#11
0
 public function delete()
 {
     $api = new SCApi();
     $arr = $api->usersessions_delete(true);
     if ($arr["loggedout"]) {
         SC::transfer();
     }
 }
示例#12
0
 public function jsonify($callback = null)
 {
     $fields = array("from", "author", "subject", "body", "to", "bcc", "header");
     $props = array();
     foreach ($fields as $id => $field) {
         $props[$field] = $this->{$field};
     }
     return SC::jsonify($props, $callback);
 }
示例#13
0
 public function create()
 {
     try {
         $api = new SCApi();
         $user = $api->users_create();
         SC::checkRedir(SCRoutes::set("users", "memberships_index", array("userid" => $user->userid)));
     } catch (Exception $ex) {
         SC::setFlashMessage($ex->getMessage(), "error");
         $this->_new();
     }
 }
 function execute(&$observer)
 {
     if (SC::isEmpty('userdata.user_id') || !require_level(USERLEVEL_ADMINISTRATION_TEAM)) {
         $observer->set('error.title', 'Permissions Error');
         $observer->set('error.message', 'You do not have permission to access this function.');
         $observer->set('error.line', __LINE__);
         $observer->set('error.file', __FILE__);
         return FALSE;
     }
     return TRUE;
 }
 public function getNumNewDoc()
 {
     if (SC::getSession('group') == 'lector') {
         $current_date = date('Y-m-d');
         $e = $this->db->select('lab_documents', '*', ' date > ' . $current_date . '');
         $e = $this->db->getCount();
     } else {
         $e = null;
     }
     return $e;
 }
 /**
  * Execute the model
  * @param Container    The Observer object.
  * @return bool        TRUE if successful, else FALSE.
  * @access public
  */
 function execute(&$observer)
 {
     if (SC::isEmpty('board_config.inventory_disable')) {
         return TRUE;
     }
     $observer->set('error.code', GENERAL_MESSAGE);
     $observer->set('error.title', 'Profile Disabled');
     $observer->set('error.message', 'The profile section of the site is currently disabled.');
     $observer->set('error.line', __LINE__);
     $observer->set('error.file', __FILE__);
     $observer->set('error.debug', backtrace());
     return FALSE;
 }
示例#17
0
 function execute(&$observer)
 {
     if (SC::isEmpty('board_config.econ_disabled')) {
         return TRUE;
     }
     $observer->set('error.code', GENERAL_MESSAGE);
     $observer->set('error.title', 'Econ Disabled');
     $observer->set('error.message', 'The economy of gaia is currently disabled.');
     $observer->set('error.line', __LINE__);
     $observer->set('error.file', __FILE__);
     $observer->set('error.debug', backtrace());
     return FALSE;
 }
 /**
  * Execute the model
  * @param Container    The Observer object.
  * @return bool        TRUE if successful, else FALSE.
  * @access public
  */
 function execute(&$observer)
 {
     if (SC::isEmpty('board_config.artarena_disable')) {
         return TRUE;
     }
     $observer->set('error.code', GENERAL_MESSAGE);
     $observer->set('error.title', 'Arena Disabled');
     //$observer->set('error.message', 'Testing is now over for Housing Arena. The Housing Arena has been disabled in preparation for a full release. We thank you for helping us and hope you will join us once again when Housing Arena is back up and fully running. All entries submitted during the testing phase will be deleted.');
     $observer->set('error.message', 'The Art Arena is currently disabled. Please check back later');
     $observer->set('error.line', __LINE__);
     $observer->set('error.file', __FILE__);
     $observer->set('error.debug', backtrace());
     return FALSE;
 }
   /**
    * Execute
    */
    function execute(&$observer)
    {
        if( SC::isEmpty("board_config.forum_disabled")) return TRUE; 
       
        $message = "The Site Forum is currently disabled";
        $observer->set('error.code', GENERAL_MESSAGE);
        $observer->set('error.message', $message);
        $observer->set('error.title', 'No Access');
        $observer->set('error.line', __LINE__);
        $observer->set('error.file', __FILE__);
        return FALSE;

        
    }
示例#20
0
	/** execute
	 * check the password the user provided against their userdata and set an error if it is not correct
	 * @param $password
	 * @return true/false on correct password
	 **/
    function execute($password){
        
        if ($this->encryptPassword($password) != SC::get('userdata.user_password')) {
            
			if( $this->messenger) {
				$this->messenger->addMessage("The password you entered does not match our records. Please try again.");
			}
			
            $this->set('nopassword', true);
            return false;
		}
        
        return true;
	}
示例#21
0
	public function execute( $gold, $messenger = false){
                	                
	        $gold = intval($gold);	        
                
                if( SC::get("userdata.user_gold") < $gold)
                {
                        if( $messenger)
                        $messenger->addMessage('You do not have enough gold. <a href="/info/gold">Click here to find out more about getting gold</a>.');
                        return FALSE;     
                }
                                        
                        
                return TRUE;
	}
 /**
  * Execute
  */
  function execute( & $observer )
  {
      if( SC::isEmpty('userdata.user_id') || ! require_level(USERLEVEL_ADMIN)) 
      {
          $message = "This page is not available under the current configuration, or ";
          $message .= "you are not authorized to view this page.";
          $observer->set('error.message', $message);
          $observer->set('error.code', GENERAL_MESSAGE);
          $observer->set('error.title', 'Not Authorized');
          $observer->set('error.line', __LINE__);
          $observer->set('error.file', __FILE__);
          return FALSE;
      }
      return TRUE;
  }
 /**
  * Функція для пошуку інформації про користувачів
  * 
  * @param array $data Дані для пошуку (шуканий текст)
  */
 public function searchUsers($data)
 {
     /*
      * Оберігаю дані
      */
     $text = strip_tags($data);
     $text = mysql_escape_string($text);
     /*
      * Лайки-шукачі інформації)
      */
     $where = "`login` LIKE '%{$text}%' OR `name` LIKE '%{$text}%' OR `surname` LIKE '%{$text}%' OR `fathername` LIKE '%{$text}%' OR `email` LIKE '%{$text}%' OR `group` LIKE '%{$text}%' OR `last_ip` LIKE '%{$text}%'";
     $u = $this->db->select('users', '*', $where);
     /** Перевірка присутності результатів * */
     /*
      * Результати відсутні - виводимо відповідне повідомлення
      */
     if ($this->db->getCount() == 0) {
         print '<div class="alert alert-danger"><span class="glyphicon glyphicon-remove-circle"></span>&nbsp;За даним запитом не знайдено нічого</div>';
     } else {
         $users = '<div class="table-responsive">';
         $users .= '<table class="table table-condensed table-bordered table-hover">';
         $users .= '<thead><tr class="caption">';
         $caption = array('ID', 'Логін', 'Ім\'я', 'Прізвище', 'По батькові', 'E-mail', 'Група', 'Активація', 'IP-адреса', 'Дії');
         foreach ($caption as $k => $v) {
             $users .= '<th style="text-align: center">' . $v . '</th>';
         }
         $users .= '</tr></thead>';
         for ($i = 0; $i < sizeof($u); $i++) {
             if ($u[$i]['id'] != SC::getCookie('id')) {
                 $users .= '<tr>';
                 foreach ($u[$i] as $k => $v) {
                     if ($k != 'password' && $k != 'date' && $k != 'activateCode' && $k != 'hash') {
                         $v = preg_replace('/(.*)(' . $text . ')(.*)/i', '\\1<span style="color: red; font-weight: bold;">\\2</span>\\3', $v);
                         $users .= '<td>' . $v . '</td>';
                     }
                 }
                 $users .= '<td>';
                 $users .= '<a class="users-info-links" href="?c=manageUsers&f=edit&p=' . $u[$i]['id'] . '">Редагувати</a><br />';
                 $users .= '<a class="users-info-links" href="?c=manageUsers&f=delete&p=' . $u[$i]['id'] . '">Видалити</a>';
                 $users .= '</td>';
                 $users .= '</tr>';
             }
         }
         $users .= '</table>';
         $users .= '</div>';
         print $users;
     }
 }
示例#24
0
 public function delete()
 {
     SC::loginRequired();
     global $current_user;
     try {
         $api = new SCApi();
         if ($api->memberships_delete()) {
             SC::transfer(SCRoutes::set("users", "memberships_index", array("userid" => $current_user->userid)));
         } else {
             throw new Exception("something went wrong");
         }
     } catch (Exception $ex) {
         SC::setFlashMessage($ex->getMessage(), "error");
         $this->show(true);
     }
 }
   /**
    * Execute
    */
    function execute(&$observer)
    {
        if( SC::isEmpty("board_config.admin_panel_enable") && !defined('ALLOW_WWW') ) 
        {
            $message = "This page is not available under the current configuration, or ";
            $message .= "you are not authorized to view this page.";
            $observer->set('error.code', GENERAL_MESSAGE);
            $observer->set('error.message', $message);
            $observer->set('error.line', __LINE__);
            $observer->set('error.file', __FILE__);
            return FALSE;
        }

        return TRUE;
        
    }
 /**
  * head
  */
 public function show()
 {
     $this->view->title = 'Аналіз біомедичних зображень Наукова група';
     $this->view->js = array('jquery-1.7.1.min', 'biaArticlesSearch');
     $this->view->meta_k = '<META NAME="Keywords" CONTENT="Аналіз біомедичних зображень, Тернопіль, цитологія, гістологія">';
     $this->view->meta_d = '<META NAME="Description" CONTENT="Аналіз біомедичних зображень, Тернопіль, цитологія, гістологія">';
     $this->view->teachers = $this->model->getAllTeachers();
     $this->view->news = $this->model->getNews();
     $this->view->articles_1 = $this->model->getArticles(0, 10);
     $this->view->articles_2 = $this->model->getArticles(11, 20);
     $this->view->year = $this->model->showYear();
     if (SC::getCookie('language') == 2) {
         $this->view->render_research('showResearch/en/show');
     } else {
         $this->view->render_research('showResearch/show');
     }
 }
 /**
  * Функція для пошуку інформації про користувачів
  * 
  * @param array $data Дані для пошуку (шуканий текст)
  */
 public function searchAbiturient($data)
 {
     /*
      * Оберігаю дані
      */
     $text = strip_tags($data);
     $text = mysql_escape_string($text);
     /*
      * Лайки-шукачі інформації)
      */
     $where = "`surname` LIKE '%{$text}%' OR `name` LIKE '%{$text}%' OR `fathername` LIKE '%{$text}%' OR `email` LIKE '%{$text}%' OR `region` LIKE '%{$text}%' OR `district` LIKE '%{$text}%'";
     $u = $this->db->select('abiturient', 'id, surname,name,fathername,email,region,district,hometown', $where);
     /** Перевірка присутності результатів * */
     /*
      * Результати відсутні - виводимо відповідне повідомлення
      */
     if ($this->db->getCount() == 0) {
         print '<div class="alert alert-danger"><span class="glyphicon glyphicon-remove-circle"></span>&nbsp;За даним запитом не знайдено нічого</div>';
     } else {
         $users = '<div class="table-responsive">';
         $users .= '<table class="table table-condensed table-bordered table-hover">';
         $users .= '<thead><tr class="caption">';
         $caption = array('ID', 'Прізвище', 'Ім\'я', 'По батькові', 'E-mail', 'Область', 'Район', 'Місто/Село');
         foreach ($caption as $k => $v) {
             $users .= '<th style="text-align: center">' . $v . '</th>';
         }
         $users .= '</tr></thead>';
         for ($i = 0; $i < sizeof($u); $i++) {
             if ($u[$i]['id'] != SC::getCookie('id')) {
                 $users .= '<tr>';
                 foreach ($u[$i] as $k => $v) {
                     if ($k != 'password' && $k != 'date' && $k != 'activateCode' && $k != 'hash') {
                         $v = preg_replace('/(.*)(' . $text . ')(.*)/i', '\\1<span style="color: red; font-weight: bold;">\\2</span>\\3', $v);
                         $users .= '<td>' . $v . '</td>';
                     }
                 }
                 $users .= '</tr>';
             }
         }
         $users .= '</table>';
         $users .= '</div>';
         print $users;
     }
 }
示例#28
0
 public function execute(CircuitController $c)
 {
     $r = $c->getRequest();
     $observer = $c->getObserver();
     // Get the message data. Try the request container first,
     // only using the observer for backwards compatibility
     if ($r->isEmpty('error.message')) {
         $message = $observer->get('error.message');
         $title = $observer->get('error.title');
         $line = $observer->get('error.line');
         $file = $observer->get('error.file');
         $debug = $observer->get('error.debug');
     } else {
         $message = $r->get('error.message');
         $title = $r->get('error.title');
         $line = $r->get('error.line');
         $file = $r->get('error.file');
         $debug = $r->get('error.debug');
     }
     if (strlen($title) < 1) {
         $title = 'ERROR';
     }
     if (strlen($message) < 1) {
         $message = 'An error occured';
     }
     $debug_str = '';
     if (!SC::isEmpty('board_config.enable_debug')) {
         $location_format = "\nFILE: %s\nLINE: %s\n";
         $debug_str = strlen($line) > 0 && strlen($file) > 0 ? sprintf($location_format, $file, $line) : '';
         if (!empty($debug) && !is_scalar($debug)) {
             ob_start();
             var_dump($debug);
             $debug = ob_get_contents();
             ob_end_clean();
         }
         $debug_str .= "\n\nDEBUG\n{$debug}\n";
     }
     $format = "<pre>%s\n%s\n\n%s\n</pre>\n\n";
     $output = sprintf($format, $title, $message, $debug_str);
     DBFactory::closeAll();
     die($output);
     exit;
 }
示例#29
0
 public function execute(CircuitController $c)
 {
     //session_pagestart(PAGE_4O4);
     switch (SC::get('metered_release.output_style')) {
         case 'popup':
             $this->set('title', 'Nothing to See Here');
             $this->render('Default.MeteredReleaseMin');
             break;
         default:
             LM::setPageTitle('Nothing to See Here');
             LM::disableGapi();
             LM::renderHeader();
             $this->setLayout('Paul McCartney');
             $this->addZoneContent('1A', 'Default.MeteredRelease');
             $this->renderLayout();
             LM::renderFooter();
             break;
     }
 }
示例#30
0
 static function render($layout, $locals = false, $content_sections = false)
 {
     if (!$locals) {
         $locals = array();
     }
     if (!$content_sections) {
         $content_sections = array();
     }
     $layout = "layouts/{$layout}.php";
     foreach ($locals as $var => $val) {
         ${$var} = $val;
     }
     foreach ($content_sections as $var => $val) {
         $var = "___{$var}";
         ${$var} = $val;
     }
     SCLayout::$content_sections = $content_sections;
     $controller = $_GET["controller"];
     $action = $_GET["action"];
     $flash_message = SC::flashMessage();
     include $layout;
 }