Cookie CMS. Идёт разработка…

Разработка потихоньку продолжается. Была добавлена возможность добавления php страниц модулями и модифицировано добавление функций через модули, реализация этого выглядит следующим образом:

 

Код запуска страницы:

$modules = array();
$modules_functions = array();
$modules_pages = array();

 

Код загрузки модуля:

load_engine_module("authorization");

 

Код добавления новых страниц и функций:

$module_functions = array (
    "authorization"  => array("sidebar")
);
 
$module_pages = array(
	"authorization" => array("register","login","userpanel","logout")
);

 

Код функции загрузки модуля:

function load_engine_module( $modulename )
{
	include "modules/" . $modulename . "/index.php";
	global $modules,$modules_functions,$modules_pages;
	$modules[] = $modulename;
	$modules_functions = array_merge($modules_functions, $module_functions);
	$modules_pages = array_merge($modules_pages, $module_pages);
}

 

Код для подключения страницы:

// check pages in modules
global $modules_pages,$modules;
for( $i=0 ; $i < array_count_two_level($modules_pages) ; $i++ )
{
	for( $j=0 ; $j < count($modules) ; $j++ )
	{
		if($modules_pages[ $modules[$j] ][$i] == $page_name)
		{
			include "modules/".$modules[$j]."/pages/".$page_name.".php";
			return;
		}
	}
}
//

 

Запуск функций модулей выглядит следующим образом:

function load_modules_function( $functionname )
{
	global $modules_functions,$modules;
	for( $i=0 ; $i < array_count_two_level($modules_functions) ; $i++ )
	{
		for( $j=0 ; $j < count($modules) ; $j++ )
		{
			if($modules_functions[ $modules[$j] ][$i] == $functionname)
			{
				eval($modules[$j]."_$functionname();");
			}
		}
	}
}

 

Как видно из кода, название функций и страниц сохраняется в массивы, а потом идёт работа с этими элементами. Уже почти готов модуль авторизации, работающий на этом принципе(используемая БД — MySQL). Я считаю этот способ довольно удобным, если есть варианты лучше или вам здесь что-то не понятно — пишите в комментарии, отвечу.

Перейти к верхней панели