83 lines
No EOL
2.5 KiB
PHP
83 lines
No EOL
2.5 KiB
PHP
<?php
|
|
|
|
/**
|
|
* The concrete command that renders the calendar.
|
|
*
|
|
* @author Time.ly Network Inc.
|
|
* @since 2.0
|
|
*
|
|
* @package AI1EC
|
|
* @subpackage AI1EC.Command
|
|
*/
|
|
class Ai1ec_Command_Render_Calendar extends Ai1ec_Command {
|
|
|
|
/**
|
|
* @var string
|
|
*/
|
|
protected $_request_type;
|
|
|
|
/* (non-PHPdoc)
|
|
* @see Ai1ec_Command::is_this_to_execute()
|
|
*/
|
|
public function is_this_to_execute() {
|
|
$settings = $this->_registry->get( 'model.settings' );
|
|
$calendar_page_id = $settings->get( 'calendar_page_id' );
|
|
if ( empty( $calendar_page_id ) ) {
|
|
return false;
|
|
}
|
|
$localization = $this->_registry->get( 'p28n.wpml' );
|
|
$aco = $this->_registry->get( 'acl.aco' );
|
|
$page_ids_to_match = array( $calendar_page_id ) +
|
|
$localization->get_translations_of_page(
|
|
$calendar_page_id
|
|
);
|
|
foreach ( $page_ids_to_match as $page_id ) {
|
|
|
|
if ( is_page( $page_id ) ) {
|
|
$this->_request->set_current_page( $page_id );
|
|
if ( ! post_password_required( $page_id ) ) {
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/* (non-PHPdoc)
|
|
* @see Ai1ec_Command::set_render_strategy()
|
|
*/
|
|
public function set_render_strategy( Ai1ec_Request_Parser $request ) {
|
|
try {
|
|
$this->_request_type = $request->get( 'request_type' );
|
|
$this->_render_strategy = $this->_registry->get(
|
|
'http.response.render.strategy.' . $this->_request_type
|
|
);
|
|
} catch ( Ai1ec_Bootstrap_Exception $e ) {
|
|
$this->_request_type = 'html';
|
|
$this->_render_strategy = $this->_registry->get(
|
|
'http.response.render.strategy.' . $this->_request_type
|
|
);
|
|
}
|
|
}
|
|
|
|
/* (non-PHPdoc)
|
|
* @see Ai1ec_Command::do_execute()
|
|
*/
|
|
public function do_execute() {
|
|
// get the calendar html
|
|
$calendar = $this->_registry->get( 'view.calendar.page' );
|
|
$css = $this->_registry->get( 'css.frontend' )
|
|
->add_link_to_html_for_frontend();
|
|
$js = $this->_registry->get( 'controller.javascript' )
|
|
->load_frontend_js( true );
|
|
return array(
|
|
'data' => $calendar->get_content( $this->_request ),
|
|
'callback' => Ai1ec_Request_Parser::get_param(
|
|
'callback',
|
|
null
|
|
),
|
|
'caller' => 'calendar',
|
|
);
|
|
}
|
|
|
|
} |