/** * 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; }
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 }