function id_projectGrid($attrs)
{
    ob_start();
    if (isset($attrs['columns'])) {
        $wide = $attrs['columns'];
    } else {
        $wide = 3;
    }
    $width = 90 / $wide;
    $margin = 10 / ($wide - 1);
    if (isset($attrs['max'])) {
        $max = $attrs['max'];
    } else {
        $max = null;
    }
    // project category
    if (isset($attrs['category'])) {
        $category = $attrs['category'];
        $args = array('post_type' => 'ignition_product', 'tax_query' => array(array('taxonomy' => 'project_category', 'field' => 'id', 'terms' => $category)));
    } else {
        // in case category isn't defined, query args must contain post type
        $args['post_type'] = 'ignition_product';
    }
    if (isset($max)) {
        $args['posts_per_page'] = $max;
    }
    // --> Custom args - START
    // orderby possible values - days_left, percent_raised, funds_raised, rand, title, date (default)
    if (isset($attrs['orderby'])) {
        if ($attrs['orderby'] == 'days_left') {
            $args['orderby'] = 'meta_value_num';
            $args['meta_key'] = 'ign_days_left';
        } else {
            if ($attrs['orderby'] == 'percent_raised') {
                $args['orderby'] = 'meta_value_num';
                $args['meta_key'] = 'ign_percent_raised';
            } else {
                if ($attrs['orderby'] == 'funds_raised') {
                    $args['orderby'] = 'meta_value_num';
                    $args['meta_key'] = 'ign_fund_raised';
                } else {
                    // reserved for later use
                    $args['orderby'] = $attrs['orderby'];
                }
            }
        }
    }
    // order possible values = ASC, DESC (default)
    if (isset($attrs['order'])) {
        $args['order'] = $attrs['order'];
    }
    // author (single name)
    if (isset($attrs['author'])) {
        $args['author_name'] = $attrs['author'];
    }
    // --> Custom args - END
    // moved this block before the query call
    require 'languages/text_variables.php';
    $custom = false;
    if (isset($attrs['deck'])) {
        $deck_id = $attrs['deck'];
        $settings = Deck::get_deck_attrs($deck_id);
        if (!empty($settings)) {
            $attrs = unserialize($settings->attributes);
            $custom = true;
        }
    }
    // start the actual query, which will also output decks
    $posts = get_posts($args);
    $project_ids = array();
    echo '<div class="ignitiondeck"><div class="grid_wrap" data-wide="' . $wide . '">';
    $i = 1;
    foreach ($posts as $post) {
        $post_id = $post->ID;
        $project_id = get_post_meta($post_id, 'ign_project_id', true);
        // no more "pass" checks are required, because the query gets all proper projects in proper order and settings
        $deck = new Deck($project_id);
        $mini_deck = $deck->mini_deck();
        $post_id = $deck->get_project_postid();
        $status = get_post_status($post_id);
        $custom = apply_filters('idcf_custom_deck', $custom, $post_id);
        $attrs = apply_filters('idcf_deck_attrs', isset($attrs) ? $attrs : null, $post_id);
        if (strtoupper($status) == 'PUBLISH') {
            $settings = getSettings();
            echo '<div class="grid_item" style="float: left; margin: 0 ' . $margin . '% ' . $margin . '% 0; width: ' . $width . '%;">';
            include 'templates/_miniWidget.php';
            echo '</div>';
            $i++;
        }
    }
    // end with query and continue with original code
    echo '</div></div>';
    echo '<br style="clear: both"/>';
    $grid = ob_get_contents();
    ob_end_clean();
    return $grid;
}
Esempio n. 2
0
 function html($widget, $params, $sidebar)
 {
     global $post, $wpdb;
     $show_mini = false;
     $page_project_id = 0;
     $custom = false;
     // Condition to store the product_id, if the page currently being visited is the project page or some other
     if (isset($post)) {
         if ($post->post_type == 'ignition_product') {
             $post_id = $post->ID;
             $page_project_id = get_post_meta($post_id, 'ign_project_id', true);
             //$page_project_id = projectPageof($post->ID, $params['product_id']);
         }
         // We have three conditions now
         // 1.	Show Mini widget only, on all pages
         // 2.	Show Full widget on all pages
         // 3.	Show Mini widget on all pages except the project page
         if (isset($params['widget_options'])) {
             if ($params['widget_options'] == "miniwidget") {
                 $show_mini = true;
             } else {
                 if ($params['widget_options'] == "fullwidget") {
                     $show_mini = false;
                 } else {
                     if ($params['widget_options'] == "miniallpages" && $page_project_id > 0) {
                         //2nd condition means it is a project page, containing some non-zero project_id
                         $show_mini = false;
                     } else {
                         $show_mini = true;
                     }
                 }
             }
         } else {
             $show_mini = true;
         }
         if (isset($params['deck_id']) && $params['deck_id'] > 0) {
             $deck_id = $params['deck_id'];
             $settings = Deck::get_deck_attrs($deck_id);
             if (!empty($settings)) {
                 $attrs = unserialize($settings->attributes);
                 $custom = true;
             }
         }
     }
     // If it's a project page, use the post_id to get the product, else use the product_id in $params
     if ($page_project_id > 0) {
         $project_id = $page_project_id;
     } else {
         $project_id = $params['product_id'];
     }
     $deck = new Deck($project_id);
     if ($show_mini == true) {
         $mini_deck = $deck->mini_deck();
         $post_id = $mini_deck->post_id;
     } else {
         $the_deck = $deck->the_deck();
         $post_id = $deck->post_id;
     }
     $custom = apply_filters('idcf_custom_deck', $custom, $post_id);
     $attrs = apply_filters('idcf_deck_attrs', isset($attrs) ? $attrs : null, $post_id);
     $widget_before = '';
     $widget_after = '';
     $mini_widget_before = '';
     $mini_widget_after = '';
     // Calling the HTML code
     ob_start();
     require ID_PATH . 'languages/text_variables.php';
     include ID_PATH . 'templates/_igWidget.php';
     $widget = ob_get_contents();
     ob_end_clean();
     if ($show_mini) {
         echo apply_filters('id_mini_widget', $widget);
     } else {
         echo apply_filters('id_widget', $widget);
     }
 }
function ide_creator_profile_display($content)
{
    // we should really turn this into a template
    $content = '';
    if (isset($_GET['creator_profile'])) {
        $profile = absint($_GET['creator_profile']);
    }
    $user = get_user_by('id', $profile);
    //$name = $user->user_firstname.' '.$user->user_lastname;
    $name = apply_filters('ide_profile_name', $user->display_name, $user);
    $twitter_link = apply_filters('ide_profile_twitter_url', get_user_meta($profile, 'twitter', true), $user);
    $fb_link = apply_filters('ide_profile_fb_url', get_user_meta($profile, 'facebook', true), $user);
    $google_link = apply_filters('ide_profile_google_url', get_user_meta($profile, 'google', true), $user);
    $website_link = apply_filters('ide_profile_website_url', $user->user_url, $user);
    ob_start();
    do_action('ide_before_creator_profile');
    $ob_before_cp = ob_get_contents();
    ob_end_clean();
    $content .= $ob_before_cp;
    ob_start();
    do_action('ide_above_creator_info');
    $ob_above_ci = ob_get_contents();
    ob_end_clean();
    $content .= $ob_above_ci;
    $content .= '<div class="ignitiondeck backer_profile">';
    $content .= '<div class="backer_info">';
    $content .= '<div class="backer_avatar">' . apply_filters('ide_profile_avatar', get_avatar($profile, 70)) . '</div>';
    $content .= '<div class="backer_title"><h3>' . apply_filters('ide_creator_name', $name, $user) . '</h3>';
    $content .= '<p>' . wpautop(apply_filters('ide_profile_description', $user->description, $user)) . '</p></div></div>';
    ob_start();
    do_action('ide_below_creator_info');
    $ob_after_ci = ob_get_contents();
    ob_end_clean();
    $content .= $ob_after_ci;
    $creator_args = array('post_type' => 'ignition_product', 'post_status' => 'publish', 'author' => $profile, 'posts_per_page' => -1);
    $created_projects = apply_filters('id_creator_projects', get_posts(apply_filters('id_creator_args', $creator_args)));
    if (!empty($created_projects)) {
        $order_content = '<div class="cf"> </div><ul class="backer_projects">';
        foreach ($created_projects as $created_project) {
            $project_id = get_post_meta($created_project->ID, 'ign_project_id', true);
            $project = new ID_Project($project_id);
            $the_project = $project->the_project();
            if (!empty($the_project)) {
                $post_id = $created_project->ID;
                $deck = new Deck($project_id);
                $mini_deck = $deck->mini_deck();
                $closed = $project->project_closed();
                $successful = $mini_deck->successful;
                $url = get_permalink($post_id);
                $image = ID_Project::get_project_thumbnail($post_id, 'id_profile_image');
                if (empty($image)) {
                    $image = idcf_project_placeholder_image('thumb');
                }
                ob_start();
                do_action('ide_before_creator_item', $post_id);
                $ob_contenta = ob_get_contents();
                ob_end_clean();
                $order_content .= $ob_contenta;
                $order_content .= '<li class="backer_project_mini"><div class="backer_wrapper"><div class="inner_wrapper">';
                ob_start();
                do_action('ide_above_creator_item', $post_id);
                $ob_contentb = ob_get_contents();
                ob_end_clean();
                $order_content .= $ob_contentb;
                if (isset($image)) {
                    $order_content .= '<a href="' . $url . '" class="backer_project_image" style="background-image: url(' . $image . ');"></a>';
                }
                if ($mini_deck->end_type !== 'open') {
                    $order_content .= '<div class="backers_days_left">' . (!$closed ? $mini_deck->days_left . ' ' . __('days to go', 'ignitiondeck') : ($successful ? __('Successful', 'ignitiondeck') : __('Ended', 'ignitiondeck'))) . '</div>';
                }
                $order_content .= '<span class="backer_project_title"><a href="' . $url . '">' . get_the_title($post_id) . '</a></span>';
                $order_content .= '<div class="backers_funded">' . $mini_deck->p_current_sale . ' ' . __('Raised', 'ignitiondeck') . '</div>';
                $order_content .= '<a href="' . $url . '"><div class="backers_hover_content">';
                $order_content .= '<span class="backer_project_text">' . stripslashes(html_entity_decode($project->short_description())) . '</span></div></a>';
                ob_start();
                do_action('ide_below_creator_item', $post_id);
                $ob_contentc = ob_get_contents();
                ob_end_clean();
                $order_content .= $ob_contentc;
                $order_content .= '</div></div></li>';
                ob_start();
                do_action('ide_after_creator_item', $post_id);
                $ob_contentd = ob_get_contents();
                ob_end_clean();
                $order_content .= $ob_contentd;
            }
        }
        $order_content .= '</ul>';
        $order_count = count($created_projects);
        if (isset($order_count) && $order_count > 0) {
            $content .= '<div class="backer_data">';
            ob_start();
            do_action('ide_before_creator_data');
            $before_creator_data = ob_get_contents();
            ob_end_clean();
            $content .= $before_creator_data;
            $content .= '<p class="backer_supported"><span class="order_count">' . $order_count . '</span> ' . __('Projects Created', 'ignitiondeck') . '</p>';
        } else {
            $content .= '<div class="backer_data">';
        }
        $content .= '<p class="backer_joined">' . __('Joined', 'ignitiondeck') . ' ' . date('n - j - Y', strtotime($user->user_registered)) . '</p>' . '<div class="id-backer-links">' . (!empty($website_link) ? '<a href="' . $website_link . '" class="website">' . __('Website', 'ignitiondeck') . '</a>' : '') . '' . (!empty($twitter_link) ? '<a href="' . $twitter_link . '" class="twitter">' . __('Twitter', 'ignitiondeck') . '</a>' : '') . (!empty($fb_link) ? '<a href="' . $fb_link . '" class="facebook">' . __('Facebook', 'ignitiondeck') . '</a>' : '') . (!empty($google_link) ? '<a href="' . $google_link . '" class="googleplus">' . __('Google Plus', 'ignitiondeck') . '</a>' : '') . '</div>';
        ob_start();
        do_action('ide_after_backer_data');
        $after_backer_data = ob_get_contents();
        ob_end_clean();
        $content .= $after_backer_data;
        $content .= '</div>';
        $content .= isset($order_content) ? $order_content : '';
        $content .= '</div>';
    }
    ob_start();
    do_action('ide_after_creator_profile');
    $ob_after_cp = ob_get_contents();
    ob_end_clean();
    $content .= $ob_after_cp;
    return $content;
}