Example #1
0
/**
 * Action handler function
 *
 * @param	&vivvo_lite_site	$sm
 * @param	string				$action
 * @param	string				$command
 * @return	bool
 */
function schedule_service(&$sm, $action, $command)
{
    if ($action != 'schedule') {
        return false;
    }
    require_once VIVVO_FS_ROOT . 'lib/vivvo/service/Schedules.service.php';
    $service = new SchedulesService($sm);
    $dm = $sm->get_dump_manager();
    $um = $sm->get_url_manager();
    $lang = $sm->get_lang();
    switch ($command) {
        case 'add':
            $schedule_params = $um->get_param_regexp('/^schedule_/');
            if ($service->add_schedule($schedule_params)) {
                $dm->add_dump('info', 0, $lang->get_value('LNG_INFO_SCHEDULE_ADD_SUCCESS'));
                header('X-Vivvo-Action-Status: 1');
                vivvo_hooks_manager::call('schedule_add_postaction');
                return true;
            }
            break;
        case 'edit':
            $schedule_params = $um->get_param_regexp('/^schedule_/');
            if ($service->edit_schedule($schedule_params)) {
                $dm->add_dump('info', 0, $lang->get_value('LNG_INFO_SCHEDULE_EDIT_SUCCESS'));
                header('X-Vivvo-Action-Status: 1');
                vivvo_hooks_manager::call('schedule_edit_postaction');
                return true;
            }
            break;
        case 'delete':
            if ($service->delete_schedule($um->get_param('schedule_id'))) {
                $dm->add_dump('info', 0, $lang->get_value('LNG_INFO_SCHEDULE_DELETE_SUCCESS'));
                header('X-Vivvo-Action-Status: 1');
                vivvo_hooks_manager::call('schedule_delete_postaction');
                return true;
            }
            break;
        case 'save_changes':
            $article_id = $um->get_param('article_id');
            foreach ($um->get_param('schedule') as $id => $mask) {
                if (!$service->edit_schedule(array('id' => $id, 'article_id' => $article_id, 'time_mask' => $mask))) {
                    break 2;
                }
            }
            foreach ($um->get_param('new_schedule') as $mask) {
                if (!$service->add_schedule(array('article_id' => $article_id, 'time_mask' => $mask))) {
                    break 2;
                }
            }
            header('X-Vivvo-Action-Status: 1');
            return true;
        default:
    }
    header('X-Vivvo-Action-Status: 0');
    header('X-Vivvo-Action-Error: ' . json_encode($service->get_error_info()));
    return false;
}