<?php

namespace admin\controls;

class Pages
{
  public static function pages_url_browser()
  {
    global $user;

    if ( !\admin\factory\Users::check_privileges( 'page_administration', $user['id'] ) )
      return \S::alert( 'Nie masz uprawnień' );
    
    echo \admin\view\Pages::browse_list(
            \admin\factory\Pages::menus_list(),
            \S::get( 'modal' )
    );
    exit;
  }

  public static function browse_list()
  {
    global $user;

    if ( !\admin\factory\Users::check_privileges( 'page_administration', $user['id'] ) )
      return \S::alert( 'Nie masz uprawnień' );

    return \admin\view\Pages::browse_list(
                    \admin\factory\Pages::menus_list()
    );
  }

  public static function menu_delete()
  {
    global $user;
    if ( !\admin\factory\Users::check_privileges( 'page_administration',
                                                  $user['id'] ) )
      return \S::alert( 'Nie masz uprawnień' );

    if ( \admin\factory\Pages::menu_delete( \S::get( 'id' ) ) )
      \S::set_message( 'Menu zostało usunięte.' );
    else
      \S::alert( 'Podczas usuwania menu wystąpił błąd. Aby usunąć menu nie może ono posiadać przypiętych stron.' );
    header( 'Location: /admin/pages/view_list/' );
    exit;
  }

  public static function page_delete()
  {
    global $user;
    if ( !\admin\factory\Users::check_privileges( 'page_administration',
                                                  $user['id'] ) )
      return \S::alert( 'Nie masz uprawnień' );

    if ( \admin\factory\Pages::page_delete( \S::get( 'id' ) ) )
      \S::set_message( 'Strona została usunięta.' );
    else
      \S::alert( 'Podczas usuwania strony wystąpił błąd. Aby usunąć stronę nie może ona posiadać przypiętych podstron.' );

    header( 'Location: /admin/pages/view_list/' );
    exit;
  }

  public static function page_articles()
  {
    global $user;
    if ( !\admin\factory\Users::check_privileges( 'page_administration',
                                                  $user['id'] ) )
      return \S::alert( 'Nie masz uprawnień' );

    return \admin\view\Pages::page_articles( \S::get( 'id' ),
                                                      \admin\factory\Pages::page_articles( \S::get( 'id' ) ) );
  }

  public static function page_save()
  {
    global $user;
    if ( !\admin\factory\Users::check_privileges( 'page_administration',
                                                  $user['id'] ) )
      return \S::alert( 'Nie masz uprawnień' );
    $response = [ 'status' => 'error', 'msg' => 'Podczas zapisywania strony wystąpił błąd. Proszę spróbować ponownie.' ];
    $values   = \S::json_to_array( \S::get( 'values' ) );

    if ( $id = \admin\factory\Pages::page_save(
                  $values['id'], $values['title'], $values['seo_link'], $values['meta_title'], $values['meta_description'], $values['meta_keywords'], $values['menu_id'],
                  $values['parent_id'], $values['page_type'], $values['sort_type'], $values['layout_id'], $values['articles_limit'], $values['show_title'],
                  $values['status'], $values['link'], $values['noindex'], $values['start'], $values['site_title'], $values['block_direct_access'], $values['cache'], $values['canonical']
            ) )
      $response = [ 'status' => 'ok', 'msg' => 'Strona została zapisana.', 'id' => $id ];

    echo json_encode( $response );
    exit;
  }

  public static function page_edit()
  {
    global $user;
    if ( !\admin\factory\Users::check_privileges( 'page_administration',
                                                  $user['id'] ) )
      return \S::alert( 'Nie masz uprawnień' );

    return \admin\view\Pages::page_edit(
                    \admin\factory\Pages::page_details(
                            \S::get( 'id' )
                    ), \S::get( 'pid' ), \S::get( 'menu_id' ),
                                                  \admin\factory\Pages::menu_lists(),
                                                  \admin\factory\Layouts::layouts_list(),
                                                  \admin\factory\Languages::languages_list(),
                                                  \admin\factory\Settings::settings_details()
    );
  }

  public static function menu_save()
  {
    global $user;
    if ( !\admin\factory\Users::check_privileges( 'page_administration',
                                                  $user['id'] ) )
      return \S::alert( 'Nie masz uprawnień' );

    $response = [ 'status' => 'error', 'msg' => 'Podczas zapisywania menu wystąpił błąd. Proszę spróbować ponownie.' ];
    $values   = \S::json_to_array( \S::get( 'values' ) );

    if ( \admin\factory\Pages::menu_save( $values['id'], $values['name'],
                                          $values['status'] ) )
      $response = [ 'status' => 'ok', 'msg' => 'Menu zostało zapisane.' ];

    echo json_encode( $response );
    exit;
  }

  public static function menu_edit()
  {
    global $user;
    if ( !\admin\factory\Users::check_privileges( 'page_administration',
                                                  $user['id'] ) )
      return \S::alert( 'Nie masz uprawnień' );

    return \admin\view\Pages::menu_edit(
                    \admin\factory\Pages::menu_details( \S::get( 'id' ) )
    );
  }

  public static function view_list()
  {
    global $user;
    if ( !\admin\factory\Users::check_privileges( 'page_administration',
                                                  $user['id'] ) )
      return \S::alert( 'Nie masz uprawnień' );

    return \admin\view\Pages::pages_list(
                    \admin\factory\Pages::menus_list()
    );
  }

}
?>
