Files
rockowa.com/autoload/admin/factory/class.LayoutManager.php
2023-05-08 09:03:09 +02:00

175 lines
5.8 KiB
PHP

<?php
namespace admin\factory;
class LayoutManager {
public function getSelectedPages( $id )
{
global $sys , $db , $config , $cache;
$key = 'getSelectedPages:' . $id;
if ( !$pages = $cache -> fetch( $key ) )
{
$query = $db -> prepare( 'SELECT page_id FROM pcms_layout_pages WHERE layout_id = :layout_id' );
$query -> bindValue( ':layout_id' , $id , \PDO::PARAM_INT );
$query -> execute();
if ( $query -> rowCount() ) while ( $row = $query -> fetch() )
$pages[] = $row['page_id'];
$query -> closeCursor();
$cache -> store( $key , $pages , $config['cache_expire'] );
}
return $pages;
}
public function getPages()
{
global $sys , $db , $config , $cache;
$key = 'getPages';
if ( !$pages = $cache -> fetch( $key ) )
{
$query = $db -> prepare( 'SELECT id FROM pcms_page WHERE enabled = :enabled' );
$query -> bindValue( ':enabled' , 1 , \PDO::PARAM_STR );
$query -> execute();
if ( $query -> rowCount() ) while ( $row = $query -> fetch() )
{
$site = \site\FSite::loadSite( $row['id'] );
$pages[] = $site;
}
$query -> closeCursor();
$cache -> store( $key , $pages , $config['cache_expire'] );
}
return $pages;
}
public function saveNew( $name , $enabled , $html , $css , $js , $time , $pages )
{
global $lang , $sys , $db;
if ( $time != $sys -> getSessionVar( 'db_edit_add' ) )
{
if ( $enabled == 1 )
{
$query = $db -> prepare( 'UPDATE pcms_layout SET enabled = :enabled' );
$query -> bindValue( ':enabled' , 0 , \PDO::PARAM_STR );
$query -> execute();
$query -> closeCursor();
}
$query = $db -> prepare( 'INSERT INTO pcms_layout ( name , enabled , html , css , javascript ) VALUES ( :name , :enabled , :html , :css , :javascript )' );
$query -> bindValue( ':name' , $name , \PDO::PARAM_STR );
$query -> bindValue( ':enabled' , $enabled , \PDO::PARAM_STR );
$query -> bindValue( ':html' , $html , \PDO::PARAM_STR );
$query -> bindValue( ':css' , $css , \PDO::PARAM_STR );
$query -> bindValue( ':javascript' , $js , \PDO::PARAM_STR );
$query -> execute();
$query -> closeCursor();
$id = $db -> lastInsertId();
if ( is_array( $pages ) ) foreach ( $pages as $page )
{
$query = $db -> prepare( 'INSERT INTO pcms_layout_pages ( layout_id , page_id ) VALUES ( :layout_id , :page_id )' );
$query -> bindValue( ':layout_id' , $id , \PDO::PARAM_INT );
$query -> bindValue( ':page_id' , $page , \PDO::PARAM_INT );
$query -> execute();
$query -> closeCursor();
}
\System::setSessionVar( 'db_edit_add' , $time );
\System::deleteCacheAdmin();
\System::setAlert( $lang -> getTrans( 'T_SZABLON_ZOSTAL_DODANY' ) );
}
}
/* ---------- */
public function save( $id , $name , $enabled , $html , $css , $js , $ajax = false , $pages )
{
global $lang , $sys , $db;
if ( $enabled == 1 )
{
$query = $db -> prepare( 'UPDATE pcms_layout SET enabled = :enabled' );
$query -> bindValue( ':enabled' , 0 , \PDO::PARAM_STR );
$query -> execute();
$query -> closeCursor();
}
$query = $db -> prepare( 'UPDATE pcms_layout SET name = :name , enabled = :enabled , html = :html , css = :css , javascript = :javascript WHERE id = :id' );
$query -> bindValue( ':name' , $name , \PDO::PARAM_STR );
$query -> bindValue( ':enabled' , $enabled , \PDO::PARAM_STR );
$query -> bindValue( ':html' , $html , \PDO::PARAM_STR );
$query -> bindValue( ':css' , $css , \PDO::PARAM_STR );
$query -> bindValue( ':javascript' , $js , \PDO::PARAM_STR );
$query -> bindValue( ':id' , $id , \PDO::PARAM_INT );
$query -> execute();
$query -> closeCursor();
$query = $db -> prepare( 'DELETE FROM pcms_layout_pages WHERE layout_id = :layout_id' );
$query -> bindValue( ':layout_id' , $id , \PDO::PARAM_INT );
$query -> execute();
$query -> closeCursor();
if ( is_array( $pages ) ) foreach ( $pages as $page )
{
$query = $db -> prepare( 'INSERT INTO pcms_layout_pages ( layout_id , page_id ) VALUES ( :layout_id , :page_id )' );
$query -> bindValue( ':layout_id' , $id , \PDO::PARAM_INT );
$query -> bindValue( ':page_id' , $page , \PDO::PARAM_INT );
$query -> execute();
$query -> closeCursor();
}
$sys -> deleteCache();
if ( !$ajax )
$sys -> setAlert( $lang -> getTrans( 'T_SZABLON_ZOSTAL_ZAPISANY' ) );
}
/* --------- */
public function delete( $id )
{
global $lang , $db , $sys;
$query = $db -> prepare( 'SELECT count(id) FROM pcms_layout' );
$query -> execute();
if ( $query -> rowCount() ) while ( $row = $query -> fetch() )
{
if ( $row[0] <= 1 )
{
$sys -> setAlert( $lang -> getTrans( 'T_NIE_MOZNA_USUNAC_SZABLONU' ) );
return false;
}
}
$query -> closeCursor();
$query = $db -> prepare( 'DELETE FROM pcms_layout WHERE id = :id' );
$query -> bindValue( ':id' , $id , \PDO::PARAM_INT );
$query -> execute();
$query -> closeCursor();
$query = $db -> prepare( 'DELETE FROM pcms_layout_pages WHERE layout_id = :layout_id' );
$query -> bindValue( ':layout_id' , $id , \PDO::PARAM_INT );
$query -> execute();
$query -> closeCursor();
$query = $db -> prepare( 'SELECT count(id) FROM pcms_layout WHERE enabled = :enabled' );
$query -> bindValue( ':enabled' , 1 , \PDO::PARAM_STR );
$query -> execute();
if ( $query -> rowCount() ) while ( $row = $query -> fetch() )
{
if ( $row[0] == 0 )
{
$query2 = $db -> prepare( 'UPDATE pcms_layout SET enabled = :enabled LIMIT 1' );
$query2 -> bindValue( ':enabled' , 1 , \PDO::PARAM_STR );
$query2 -> execute();
$query2 -> closeCursor();
}
}
$query -> closeCursor();
$sys -> deleteCache();
$sys -> setAlert( $lang -> getTrans( 'T_SZABLON_ZOSTAL_USUNIETY' ) );
}
}
?>