$ca_v){
$atts[$ca_n] = str_replace(array("{{", "}}"), array("[","]"), $ca_v);
}
switch($action){
case 'named_sr_form' :
case 'named_sp_form' :
if (!get_option( "sm_accept_spa", 0) AND $action == "named_sp_form"){
new sm_wp_log("Trying to show shortcode for named sp form \"{$atts['form_name']}\" but option sm_accept_spa form not showing");
break;
}
new sm_wp_log("Showing named_form \"{$atts['form_name']}\" via shortcode");
if (!isset($atts['form_name'])){
throw new sm_exception_general("attribute 'form_name' is required in SM short tag with action 'named_form'");
}
$interview_params = array(
'embedable_name' => $atts['form_name'],
'_type' => ($action == 'named_sp_form' ? 'sp' : 'sr')
);
if ($action == 'named_sr_form') {
if (!empty($_REQUEST['sm_int_id']) && is_numeric($_REQUEST['sm_int_id'])){
$interview_params['_override_interview_id'] = $_REQUEST['sm_int_id'];
} elseif (isset($atts['default_sr_id']) && is_numeric($atts['default_sr_id'])) {
$interview_params['_override_interview_id'] = $atts['default_sr_id'];
}
}
$interview_params = apply_filters('smwp_pre_make_interview', $interview_params);
$interview = sm_make_interview_from_embeddable($interview_params);
if (empty($interview)){
new sm_wp_log(array("type"=>"error", "message"=>"Interview \"{$atts['form_name']}\" not found"));
define('DONOTCACHEPAGE', true);
$result = __("Interview not available", "sm_translate");
break;
}
if ($interview->has_errors()){
new sm_wp_log(array("type"=>"error", "message"=>"Interview has errors" . $interview->get_formatted_errors()));
define('DONOTCACHEPAGE', true);
$result = __("Interview not available", "sm_translate");
break;
}
sm_enqueue_required_js_for_forms();
if ($interview->get_parameter('view') == 'multiplude'){//multiplude requires bbq plugin to enable forward and backward functions
sm_enqueue_required_js_for_forms(array(), array("jquery.bbq","multiplude_back_fix"));
}
$result = $interview->render_with_submit();
break;
case 'home_list' :
$api = sm_api_factory();
$clean_atts = shortcode_atts( array(
'target' => null
), $atts );
if (empty($atts['target'])){
throw new Exception("target is required in SM short tag with action 'home_list'");
}
if (stripos($clean_atts['target'], "?") === FALSE){
$activity_link = $clean_atts['target'] . "?";
} else {
$activity_link = $clean_atts['target'] . "&";
}
$activity_link = "[label]\n";
new sm_wp_log("Showing home_list via shortcode");
try {
$home_list = $api->sr->category->list->get();
} catch(Exception $e){
new sm_wp_log(array("type"=>"error", "message"=>"Homelist has errors" . $home_list->get_formatted_errors()));
define('DONOTCACHEPAGE', true);
$result = __("Home list not available", "sm_translate");
break;
}
$home_list->set_parameter("sm_display_defaults", $sm_display_defaults);
$home_list->set_parameter("activity_link", $activity_link);
$result = $home_list->render();
break;
case 'category_list' :
$api = sm_api_factory();
$clean_atts = shortcode_atts( array(
'target' => null,//task_link' => "[label]\n",
'default_cat_id' => null
), $atts );
foreach($clean_atts as $ca_n => $ca_v){
if (empty($atts[$ca_n])){
throw new Exception("attribute \"$ca_n\" is required in SM short tag with action 'category_list'");
}
}
if (!empty($_REQUEST['sm_cat_id']) && is_numeric($_REQUEST['sm_cat_id'])){
$cat_id = $_REQUEST['sm_cat_id'];
} else {
$cat_id = $clean_atts['default_cat_id'];
}
if (stripos($clean_atts['target'], "?") === FALSE){
$interview_link = $clean_atts['target'] . "?";
} else {
$interview_link = $clean_atts['target'] . "&";
}
$interview_link = "[label]\n";
new sm_wp_log("Showing category \"{$cat_id}\" via shortcode to \"" . htmlentities($interview_link) . "\"");
//$atts['mode'] = isset($atts['mode']) ? $atts['mode'] : 'basic';//default to basic
try {
$category_list = $api->sr->category->activities->get(array('category'=>$cat_id));
} catch(Exception $e){
new sm_wp_log(array("type"=>"error", "message"=>"Category List has errors"));
define('DONOTCACHEPAGE', true);
$result = __("Category not available", "sm_translate");
}
if (! empty($category_list)){
if ($category_list->has_errors()){
new sm_wp_log(array("type"=>"error", "message"=>"Category List has errors" . $category_list->get_formatted_errors()));
define('DONOTCACHEPAGE', true);
$result = __("Category not available", "sm_translate");
}
$category_list->set_parameter("sm_display_defaults", $sm_display_defaults);
$category_list->set_parameter("interview_link", $interview_link);
$result .= $category_list->render();
}
break;
case 'search_box' :
$api = sm_api_factory();
new sm_wp_log("Showing search_box via shortcode");
sm_enqueue_required_js_for_forms(array(), array("jquery","jquery.validate"));
$search_box = $api->sr->activity->search->renderable();
$search_box->set_parameter("sm_display_defaults", $sm_display_defaults);
$result = $search_box->render();
break;
default :
new sm_wp_log(array("type"=>"error", "message"=>"Invalid shortcode action \"$action\"!"));
$result = "";
//throw new sm_exception_general("Invalid action \"$action\" in SM shortcode");
break;
}
}
$result = apply_filters('sm_shortcode_func', $result, $interview_params);
return $result;
}