/**
  * Loads the multi-rating view using the data passed to $vars
  * @param array $vars
  * @return string Returns the generated multi-rating HTML
  */
 public function embed_multi_rating($vars)
 {
     $multirating_options = $this->get_multirating_options_by_class($vars['mr_element_class']);
     $general_options = $this->get_options_by_class($vars['mr_element_class']);
     $vars['mr_general_options'] = $general_options;
     $vars['mr_multi_options'] = $multirating_options;
     // Retrieve the generated HTML, necessary for proper placement in the site, e.g.: bottom center
     ob_start();
     rw_require_view('site/multi-rating.php', $vars);
     $html = ob_get_contents();
     ob_end_clean();
     return $html;
 }
Example #2
0
        function rw_rating_report_page()
        {
            $filters = array("urid" => array("label" => "Rating Id", "validation" => create_function('$val', 'return (is_numeric($val) && $val >= 0);')), "vid" => array("label" => "User Id", "validation" => create_function('$val', 'return (is_numeric($val) && $val >= 0);')), "pcid" => array("label" => "PC Id", "validation" => create_function('$val', 'return (RatingWidgetPlugin::_isValidPCId($val));')), "ip" => array("label" => "IP", "validation" => create_function('$val', 'return (1 === preg_match("/^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$/", $val));')));
            $orderby = isset($_REQUEST["orderby"]) ? $_REQUEST["orderby"] : "created";
            $order = isset($_REQUEST["order"]) ? $_REQUEST["order"] : "DESC";
            $date_from = isset($_REQUEST["from"]) ? $_REQUEST["from"] : date(WP_RW__DEFAULT_DATE_FORMAT, time() - WP_RW__PERIOD_MONTH);
            $date_to = isset($_REQUEST["to"]) ? $_REQUEST["to"] : date(WP_RW__DEFAULT_DATE_FORMAT);
            $rating_type = isset($_REQUEST["type"]) && in_array($_REQUEST["type"], array("star", "nero")) ? $_REQUEST["type"] : "star";
            $rating_stars = isset($_REQUEST["stars"]) ? max(WP_RW__MIN_STARS, min(WP_RW__MAX_STARS, (int) $_REQUEST["stars"])) : WP_RW__DEF_STARS;
            $rw_limit = isset($_REQUEST["limit"]) ? max(WP_RW__REPORT_RECORDS_MIN, min(WP_RW__REPORT_RECORDS_MAX, $_REQUEST["limit"])) : WP_RW__REPORT_RECORDS_MIN;
            $rw_offset = isset($_REQUEST["offset"]) ? max(0, (int) $_REQUEST["offset"]) : 0;
            $details = array("uid" => WP_RW__USER_KEY, "orderby" => $orderby, "order" => $order, "since" => "{$date_from} 00:00:00", "due" => "{$date_to} 23:59:59", "date" => "updated", "limit" => $rw_limit + 1, "offset" => $rw_offset, "stars" => $rating_stars, "type" => $rating_type);
            // Attach filters data.
            foreach ($filters as $filter => $filter_data) {
                if (isset($_REQUEST[$filter]) && true === $filter_data["validation"]($_REQUEST[$filter])) {
                    $details[$filter] = $_REQUEST[$filter];
                }
            }
            $rw_ret_obj = $this->RemoteCall("action/report/rating.php", $details, WP_RW__CACHE_TIMEOUT_REPORT);
            if (false === $rw_ret_obj) {
                return;
            }
            // Decode RW ret object.
            $rw_ret_obj = json_decode($rw_ret_obj);
            if (false == $rw_ret_obj->success) {
                $this->rw_report_example_page();
                return false;
            }
            $empty_result = !is_array($rw_ret_obj->data) || 0 == count($rw_ret_obj->data);
            // Override token to client's call token for iframes.
            $details["token"] = self::GenerateToken($details["timestamp"], false);
            ?>
<div class="wrap rw-dir-ltr rw-report">
    <h2><?php 
            echo __('Rating-Widget Reports', WP_RW__ID) . " (Id = " . $_REQUEST["urid"] . ")";
            ?>
</h2>
    <div id="message" class="updated fade">
        <p><strong style="color: red;">Notic: Data may be delayed 30 minutes.</strong></p>
    </div>
    <form method="post" action="">
        <div class="tablenav">
            <div class="rw-control-bar actions">
                <span>Date Range:</span>
                <input type="text" value="<?php 
            echo $date_from;
            ?>
" id="rw_date_from" name="rw_date_from" style="width: 90px; text-align: center;" />
                -
                <input type="text" value="<?php 
            echo $date_to;
            ?>
" id="rw_date_to" name="rw_date_to" style="width: 90px; text-align: center;" />
                <script type="text/javascript">
                    jQuery.datepicker.setDefaults({
                        dateFormat: "yy-mm-dd"
                    })
                    
                    jQuery("#rw_date_from").datepicker({
                        maxDate: 0,
                        onSelect: function(dateText, inst){
                            jQuery("#rw_date_to").datepicker("option", "minDate", dateText);
                        }
                    });
                    jQuery("#rw_date_from").datepicker("setDate", "<?php 
            echo $date_from;
            ?>
");
                    
                    jQuery("#rw_date_to").datepicker({
                        minDate: "<?php 
            echo $date_from;
            ?>
",
                        maxDate: 0,
                        onSelect: function(dateText, inst){
                            jQuery("#rw_date_from").datepicker("option", "maxDate", dateText);
                        }
                    });
                    jQuery("#rw_date_to").datepicker("setDate", "<?php 
            echo $date_to;
            ?>
");
                </script>
                <span>Order By:</span>                
                <select id="rw_orderby">
                <?php 
            $select = array("rid" => __('Id', WP_RW__ID), "created" => __('Start Date', WP_RW__ID), "updated" => __('Last Update', WP_RW__ID), "rate" => __('Rate', WP_RW__ID), "vid" => __('User Id', WP_RW__ID), "pcid" => __('PC Id', WP_RW__ID), "ip" => __('IP', WP_RW__ID));
            foreach ($select as $value => $option) {
                $selected = '';
                if ($value == $orderby) {
                    $selected = ' selected="selected"';
                }
                ?>
                        <option value="<?php 
                echo $value;
                ?>
" <?php 
                echo $selected;
                ?>
><?php 
                echo $option;
                ?>
</option>
                <?php 
            }
            ?>
                </select>
                <input class="button-secondary action" type="button" value="<?php 
            _e("Show", WP_RW__ID);
            ?>
" onclick="top.location = RWM.enrichQueryString(top.location.href, ['from', 'to', 'orderby'], [jQuery('#rw_date_from').val(), jQuery('#rw_date_to').val(), jQuery('#rw_orderby').val()]);" />
            </div>
        </div>
        <br />
        <div class="rw-filters">
        <?php 
            foreach ($filters as $filter => $filter_data) {
                if (isset($_REQUEST[$filter]) && true === $filter_data["validation"]($_REQUEST[$filter])) {
                    ?>
        <div class="rw-ui-report-filter">
            <a class="rw-ui-close" href="<?php 
                    $query_string = self::_getRemoveFilterFromQueryString($_SERVER["QUERY_STRING"], $filter);
                    $query_string = self::_getRemoveFilterFromQueryString($query_string, "offset");
                    echo $_SERVER["SCRIPT_URI"] . "?" . $query_string;
                    ?>
">x</a> |
            <span class="rw-ui-defenition"><?php 
                    echo $filter_data["label"];
                    ?>
:</span>
            <span class="rw-ui-value"><?php 
                    echo $_REQUEST[$filter];
                    ?>
</span>
        </div>
        <?php 
                }
            }
            ?>
        </div>
        <br />
        <br />
        <iframe class="rw-chart" src="<?php 
            $details["width"] = !$empty_result ? 647 : 950;
            $details["height"] = 200;
            $query = "";
            foreach ($details as $key => $value) {
                $query .= $query == "" ? "?" : "&";
                $query .= "{$key}=" . urlencode($value);
            }
            echo WP_RW__ADDRESS . "/action/chart/column.php{$query}";
            ?>
" width="<?php 
            echo $details["width"];
            ?>
" height="<?php 
            echo $details["height"] + 4;
            ?>
" frameborder="0"></iframe>
        <?php 
            if (!$empty_result) {
                ?>
        <iframe class="rw-chart" src="<?php 
                $details["width"] = 300;
                $details["height"] = 200;
                $query = "";
                foreach ($details as $key => $value) {
                    $query .= $query == "" ? "?" : "&";
                    $query .= "{$key}=" . urlencode($value);
                }
                $query .= "&stars={$rating_stars}";
                echo WP_RW__ADDRESS . "/action/chart/pie.php{$query}";
                ?>
" width="<?php 
                echo $details["width"];
                ?>
" height="<?php 
                echo $details["height"] + 4;
                ?>
" frameborder="0"></iframe>
        <?php 
            }
            ?>
        <br /><br />
        <table class="widefat"><?php 
            $records_num = $showen_records_num = 0;
            if (!is_array($rw_ret_obj->data) || count($rw_ret_obj->data) === 0) {
                ?>
            <tbody>
                <tr>
                    <td colspan="6"><?php 
                printf(__('No votes here.', WP_RW__ID));
                ?>
</td>
                </tr>
            </tbody><?php 
            } else {
                ?>
            <thead>
                <tr>
                    <th scope="col" class="manage-column">User Id</th>
                    <th scope="col" class="manage-column">PC Id</th>
                    <th scope="col" class="manage-column">IP</th>
                    <th scope="col" class="manage-column">Date</th>
                    <th scope="col" class="manage-column">Rate</th>
                </tr>
            </thead>
            <tbody>
            <?php 
                $alternate = true;
                $records_num = count($rw_ret_obj->data);
                $showen_records_num = min($records_num, $rw_limit);
                for ($i = 0; $i < $showen_records_num; $i++) {
                    $vote = $rw_ret_obj->data[$i];
                    if ($vote->vid != "0") {
                        $user = get_userdata($vote->vid);
                    } else {
                        $user = new stdClass();
                        $user->user_login = "******";
                    }
                    ?>
                <tr<?php 
                    if ($alternate) {
                        echo ' class="alternate"';
                    }
                    ?>
>
                    <td>
                        <a href="<?php 
                    $query_string = self::_getAddFilterQueryString($_SERVER["QUERY_STRING"], "vid", $vote->vid);
                    echo $_SERVER["SCRIPT_URI"] . "?" . $query_string;
                    ?>
"><?php 
                    echo $user->user_login;
                    ?>
</a>
                    </td>
                    <td>
                        <a href="<?php 
                    $query_string = self::_getAddFilterQueryString($_SERVER["QUERY_STRING"], "pcid", $vote->pcid);
                    echo $_SERVER["SCRIPT_URI"] . "?" . $query_string;
                    ?>
"><?php 
                    echo $vote->pcid != "00000000-0000-0000-0000-000000000000" ? $vote->pcid : "Anonymous";
                    ?>
</a>
                    </td>
                    <td>
                        <a href="<?php 
                    $query_string = self::_getAddFilterQueryString($_SERVER["QUERY_STRING"], "ip", $vote->ip);
                    echo $_SERVER["SCRIPT_URI"] . "?" . $query_string;
                    ?>
"><?php 
                    echo $vote->ip;
                    ?>
</a>
                    <td><?php 
                    echo $vote->updated;
                    ?>
</td>
                    <td>
                        <?php 
                    $vars = array("votes" => 1, "rate" => $vote->rate * ($rating_stars / WP_RW__DEF_STARS), "dir" => "ltr", "type" => "star", "stars" => $rating_stars);
                    if ($rating_type == "star") {
                        $vars["style"] = "yellow";
                        rw_require_view('rating.php', $vars);
                    } else {
                        $vars["type"] = "nero";
                        $vars["style"] = "thumbs";
                        $vars["rate"] = $vars["rate"] > 0 ? 1 : -1;
                        rw_require_view('rating.php', $vars);
                    }
                    ?>
                    </td>
                </tr>
            <?php 
                    $alternate = !$alternate;
                }
                ?>
            </tbody>
        <?php 
            }
            ?>
        </table>
        <?php 
            if ($showen_records_num > 0) {
                ?>
        <div class="rw-control-bar">
            <div style="float: left;">
                <span style="font-weight: bold; font-size: 12px;"><?php 
                echo $rw_offset + 1;
                ?>
-<?php 
                echo $rw_offset + $showen_records_num;
                ?>
</span>
            </div>
            <div style="float: right;">
                <span>Show rows:</span>
                <select name="rw_limit" onchange="top.location = RWM.enrichQueryString(top.location.href, ['offset', 'limit'], [0, this.value]);">
                <?php 
                $limits = array(WP_RW__REPORT_RECORDS_MIN, 25, WP_RW__REPORT_RECORDS_MAX);
                foreach ($limits as $limit) {
                    ?>
                    <option value="<?php 
                    echo $limit;
                    ?>
"<?php 
                    if ($rw_limit == $limit) {
                        echo ' selected="selected"';
                    }
                    ?>
><?php 
                    echo $limit;
                    ?>
</option>
                <?php 
                }
                ?>
                </select>
                <input type="button"<?php 
                if ($rw_offset == 0) {
                    echo ' disabled="disabled"';
                }
                ?>
 class="button button-secondary action" style="margin-left: 20px;" onclick="top.location = '<?php 
                $query_string = self::_getAddFilterQueryString($_SERVER["QUERY_STRING"], "offset", max(0, $rw_offset - $rw_limit));
                echo $_SERVER["SCRIPT_URI"] . "?" . $query_string;
                ?>
';" value="Previous" />
                <input type="button"<?php 
                if ($showen_records_num == $records_num) {
                    echo ' disabled="disabled"';
                }
                ?>
 class="button button-secondary action" onclick="top.location = '<?php 
                $query_string = self::_getAddFilterQueryString($_SERVER["QUERY_STRING"], "offset", $rw_offset + $rw_limit);
                echo $_SERVER["SCRIPT_URI"] . "?" . $query_string;
                ?>
';" value="Next" />
            </div>
        </div>
        <?php 
            }
            ?>
    </form>
</div>
<?php 
        }