$prop ) { $prop['key'] = $key; $models[] = $prop; } return $models; } public static function get_detailed_list() { return array( self::DESIGN_SHOW => array( 'key' => self::DESIGN_SHOW, 'name' => __( 'Display Countdown Design', 'thrive-ult' ), 'description' => __( 'Displays a countdown design. If the design has multiple states, you can also choose a design state', 'thrive-ult' ), ), // self::DESIGN_SWITCH_STATE => array( // 'key' => self::DESIGN_SWITCH_STATE, // 'name' => __( 'Switch Countdown Design State', 'thrive-ult'), // 'description' => __( 'Simply allows the user to switch from one state to another.', 'thrive-ult'), // ), // self::CAMPAIGN_END => array( // 'key' => self::CAMPAIGN_END, // 'name' => __( 'End Current Campaign', 'thrive-ult'), // 'description' => __( 'Completely ends the Campaign so that no more triggers and actions are performed in the current timeline.', 'thrive-ult'), // ), // self::CAMPAIGN_MOVE => array( // 'key' => self::CAMPAIGN_MOVE, // 'name' => __( 'Move to new campaign', 'thrive-ult'), // 'description' => __( 'Ends the current campaign and starts a new one.', 'thrive-ult'), // ), ); } /** * Gets details of an action based on an action_key * * @param $action_key * * @return null */ public static function get_details( $action_key ) { if ( ! in_array( $action_key, self::get_keys() ) ) { return null; } $actions = self::get_detailed_list(); return $actions[ $action_key ]; } /** * Gets the html options for a specific action * This html is used when a user wants to add/edit an event and selects an action * * @param string|array $action * * @return string html */ public function get_options_html( $action ) { if ( ! is_array( $action ) ) { $action['key'] = $action; } if ( empty( $action['key'] ) || ! in_array( $action['key'], self::get_keys() ) ) { return ''; } $method = "{$action['key']}_options"; if ( ! method_exists( $this, $method ) ) { return $this->default_options(); } return call_user_func( array( $this, $method ), $action ); } protected function default_options() { return $this->view( 'default' ); } /** * Gets the options html for action * * @param array $action optional * * @return string html */ protected function design_show_options( $action = array() ) { $results = tve_ult_get_designs_and_states( $action['campaign'], array( 'id', 'post_title' ) ); $designs = $results['designs']; $action = array_merge( self::get_details( $action['key'] ), $action ); $used_actions = $this->param( 'used_actions' ); if ( ! isset( $event['actions'] ) ) { $event['actions'] = array(); } $all_used = false; if ( $this->param( 'mode' ) === 'AddMode' && count( $designs ) === count( $event['actions'] ) ) { $all_used = true; } /** * Assure unique design action per event * (cannot be possible to have more actions that show the same design) */ if ( is_array( $used_actions ) && ! empty( $used_actions ) ) { foreach ( $results['designs'] as $key => $design ) { foreach ( $used_actions as $used ) { if ( isset( $action['design'] ) && $action['design'] == $design['id'] ) { continue; } if ( $used['design'] == $design['id'] ) { unset( $designs[ $key ] ); } } } } return $this->view( self::DESIGN_SHOW, array( 'designs' => $designs, 'states' => json_encode( $results['states'] ), 'action' => $action, 'all_used' => $all_used, ) ); } /** * Gets the options html for action * * @param array $action optional * * @return string html */ protected function design_hide_options( $action = array() ) { $action = array_merge( self::get_details( $action['key'] ), $action ); return $this->view( self::DESIGN_HIDE, array( 'designs' => tve_ult_get_designs( $_REQUEST['campaign_id'] ), 'action' => $action, ) ); } /** * Gets the options html for action * * @param array $action optional * * @return string html */ protected function campaign_move_options( $action = array() ) { $campaigns = tve_ult_get_campaigns( array( 'get_settings' => false ) ); $action = array_merge( self::get_details( $action['key'] ), $action ); return $this->view( self::CAMPAIGN_MOVE, array( 'campaigns' => $campaigns, 'action' => $action, ) ); } /** * Gets the options html for action * * @param array $action optional * * @return string html */ protected function campaign_end_options( $action = array() ) { $action = array_merge( self::get_details( $action['key'] ), $action ); return $this->view( self::CAMPAIGN_END, array( 'action' => $action, ) ); } /** * Gets the options html for action * * @param array $action optional * * @return string html */ protected function design_switch_state_options( $action = array() ) { $results = tve_ult_get_designs_and_states( $_REQUEST['campaign_id'], array( 'id', 'post_title' ) ); $action = array_merge( self::get_details( $action['key'] ), $action ); return $this->view( self::DESIGN_SWITCH_STATE, array( 'designs' => $results['designs'], 'states' => json_encode( $results['states'] ), 'action' => $action, ) ); } /** * Renders a view and returns its html * based on $data * * @param $view * @param array $data * * @return string */ protected function view( $view, $data = array() ) { $file = TVE_Ult_Const::plugin_path( "admin/views/action/options/" . $view . ".phtml" ); if ( ! file_exists( $file ) ) { return ''; } extract( $data ); ob_start(); include $file; $html = ob_get_contents(); ob_end_clean(); return $html; } }