function options_page() { global $wpdb, $userdata; $wpdb->show_errors(); $this->install(); get_currentuserinfo(); $date_format = sprintf('%s @ %s', $this->get_option('day_format'), $this->get_option('hour_format')); $basename = basename(LIFESTREAM_PLUGIN_FILE); $errors = array(); $message = null; switch ($_GET['page']) { case 'lifestream-maintenance.php': if (@$_POST['resetcron']) { $this->reschedule_cron(); $message = $this->__('Cron timers have been reset.'); } elseif (@$_POST['restore']) { $this->restore_options(); $message = $this->__('Default options have been restored.'); } elseif (@$_POST['restoredb']) { $this->restore_database(); $message = $this->__('Default database has been restored.'); } elseif (@$_POST['fixposts']) { $new_posts = $this->upgrade_posts_to_events(); $message = $this->__('There were %d new posts which had to be created.', $new_posts); } elseif (@$_POST['cleanupposts']) { $affected = $this->safe_query($wpdb->prepare("DELETE FROM `" . $wpdb->prefix . "posts` WHERE `post_type` = 'lsevent' AND `ID` NOT IN (SELECT `post_id` FROM `" . $wpdb->prefix . "lifestream_event_group` WHERE `post_id` != 0)")); $message = $this->__('There were %d unused posts which have been removed.', $affected); } elseif (@$_POST['recreatepage']) { $this->create_page_template(); $message = $this->__('A new page was created for Lifestream, with the ID of %s.', $this->get_option('page_id')); } break; case 'lifestream-events.php': switch (isset($_REQUEST['op']) ? strtolower($_REQUEST['op']) : null) { case 'delete': if (!($ids = $_REQUEST['id'])) { break; } if (!is_array($ids)) { $ids = array($ids); } foreach ($ids as $id) { $result =& $wpdb->get_results($wpdb->prepare("SELECT `id`, `feed_id`, `timestamp`, `owner_id` FROM `" . $wpdb->prefix . "lifestream_event` WHERE `id` = %d", $id)); if (!$result) { $errors[] = $this->__('The selected feed was not found.'); } elseif (!current_user_can('manage_options') && $result[0]->owner_id != $userdata->ID) { $errors[] = $this->__('You do not have permission to do that.'); } else { $result =& $result[0]; $wpdb->query($wpdb->prepare("UPDATE `" . $wpdb->prefix . "lifestream_event` SET `visible` = 0 WHERE `id` = %d", $result->id)); $wpdb->query($wpdb->prepare("UPDATE `" . $wpdb->prefix . "lifestream_event_group` SET `visible` = 0 WHERE `event_id` = %d", $result->id)); // Now we have to update the batch if it exists. $group =& $wpdb->get_results($wpdb->prepare("SELECT `id` FROM `" . $wpdb->prefix . "lifestream_event_group` WHERE `event_id` IS NULL AND DATE(FROM_UNIXTIME(`timestamp`)) = DATE(FROM_UNIXTIME(%d)) AND `feed_id` = %d LIMIT 0, 1", $result->timestamp, $result->feed_id)); if (count($group) == 1) { $group =& $group[0]; $results =& $wpdb->get_results($wpdb->prepare("SELECT `data`, `link` FROM `" . $wpdb->prefix . "lifestream_event` WHERE `feed_id` = %d AND `visible` = 1 AND DATE(FROM_UNIXTIME(`timestamp`)) = DATE(FROM_UNIXTIME(%d))", $result->feed_id, $result->timestamp)); if (count($results)) { $events = array(); foreach ($results as &$result) { $result->data = unserialize($result->data); $result->data['link'] = $result->link; $events[] = $result->data; } $wpdb->query($wpdb->prepare("UPDATE `" . $wpdb->prefix . "lifestream_event_group` SET `data` = %s, `total` = %d, `updated` = 1 WHERE `id` = %d", $wpdb->escape(serialize($events)), count($events), $group->id)); } else { $this->safe_query($wpdb->prepare("DELETE FROM `" . $wpdb->prefix . "posts` WHERE `post_type` = 'lsevent' AND `ID` = %d", $group->post_id)); $wpdb->query($wpdb->prepare("DELETE FROM `" . $wpdb->prefix . "lifestream_event_group` WHERE `id` = %d", $group->id)); } } else { $this->safe_query($wpdb->prepare("DELETE FROM `" . $wpdb->prefix . "posts` WHERE `post_type` = 'lsevent' AND `ID` = %d", $result->post_id)); $wpdb->query($wpdb->prepare("DELETE FROM `" . $wpdb->prefix . "lifestream_event_group` WHERE `event_id` = %d", $result->id)); } } $message = $this->__('The selected events were hidden.'); } break; } break; case 'lifestream-settings.php': if (!empty($_POST['save'])) { foreach (array_keys($this->_options) as $value) { $this->update_option($value, isset($_POST['lifestream_' . $value]) ? stripslashes($_POST['lifestream_' . $value]) : '0'); } // We need to make sure the cron runs now $this->reschedule_cron(); } break; default: $feedmsgs = array(); switch (isset($_REQUEST['op']) ? strtolower($_REQUEST['op']) : null) { case 'refreshall': $results = $this->update_all($userdata->ID); foreach ($results as $id => $result) { if (is_int($result)) { $feedmsgs[$id] = $result; } else { $errors[] = $this->__('There was an error refreshing the selected feed: ID %s', $id); } } $message = $this->__('All of your feeds have been refreshed.'); break; case 'refresh': if (!$_REQUEST['id']) { break; } foreach ($_REQUEST['id'] as $id) { $result =& $wpdb->get_results($wpdb->prepare("SELECT * FROM `" . $wpdb->prefix . "lifestream_feeds` WHERE `id` = %d LIMIT 0, 1", $id)); if (!$result) { $errors[] = $this->__('The selected feed was not found.'); } elseif (!current_user_can('manage_options') && $result[0]->owner_id != $userdata->ID) { $errors[] = $this->__('You do not have permission to do that.'); } else { $instance = Lifestream_Feed::construct_from_query_result($this, $result[0]); $msg_arr = $instance->refresh(); if ($msg_arr[0] !== false) { $message = $this->__('The selected feeds and their events have been refreshed.'); $feedmsgs[$instance->id] = $msg_arr[1]; } else { $errors[] = $this->__('There was an error refreshing the selected feed: ID %s', $instance->id); } } } break; case 'pause': if (!$_REQUEST['id']) { break; } $ids = array(); foreach ($_REQUEST['id'] as $id) { $ids[] = (int) $id; } if (!empty($ids)) { if (current_user_can('manage_options')) { $wpdb->query($wpdb->prepare("UPDATE `" . $wpdb->prefix . "lifestream_feeds` SET `active` = 0 WHERE `id` IN ('%s')", implode("','", $ids))); } else { $wpdb->query($wpdb->prepare("UPDATE `" . $wpdb->prefix . "lifestream_feeds` SET `active` = 1 WHERE `id` IN ('%s') AND `owner_id` = %s", implode("','", $ids), $userdata->ID)); } $message = $this->__('The selected feeds have been paused, and events will not be refreshed.'); } break; case 'unpause': if (!$_REQUEST['id']) { break; } $ids = array(); foreach ($_REQUEST['id'] as $id) { $ids[] = (int) $id; } if (!empty($ids)) { if (current_user_can('manage_options')) { $wpdb->query($wpdb->prepare("UPDATE `" . $wpdb->prefix . "lifestream_feeds` SET `active` = 1 WHERE `id` IN ('%s')", implode("','", $ids))); } else { $wpdb->query($wpdb->prepare("UPDATE `" . $wpdb->prefix . "lifestream_feeds` SET `active` = 0 WHERE `id` IN ('%s') AND `owner_id` = %s", implode("','", $ids), $userdata->ID)); } $message = $this->__('The selected feeds have been unpaused, and events will now be refreshed.'); } break; case 'delete': if (!$_REQUEST['id']) { break; } foreach ($_REQUEST['id'] as $id) { $result =& $wpdb->get_results($wpdb->prepare("SELECT * FROM `" . $wpdb->prefix . "lifestream_feeds` WHERE `id` = %d LIMIT 0, 1", $id)); if (!$result) { $errors[] = $this->__('The selected feed was not found.'); } elseif (!current_user_can('manage_options') && $result[0]->owner_id != $userdata->ID) { $errors[] = $this->__('You do not have permission to do that.'); } else { $instance = Lifestream_Feed::construct_from_query_result($this, $result[0]); $instance->delete(); $message = $this->__('The selected feeds and all related events has been removed.'); } } break; case 'edit': $result =& $wpdb->get_results($wpdb->prepare("SELECT * FROM `" . $wpdb->prefix . "lifestream_feeds` WHERE `id` = %d LIMIT 0, 1", $_GET['id'])); if (!$result) { $errors[] = $this->__('The selected feed was not found.'); } elseif (!current_user_can('manage_options') && $result[0]->owner_id != $userdata->ID) { $errors[] = $this->__('You do not have permission to do that.'); } else { $instance = Lifestream_Feed::construct_from_query_result($this, $result[0]); $options = $instance->get_options(); if (@$_POST['save']) { $values = array(); foreach ($options as $option => $option_meta) { if ($option_meta[1] && !$_POST[$option]) { $errors[] = $option_meta[0] . ' is required.'; } else { $values[$option] = stripslashes($_POST[$option]); } } if ($instance->get_constant('MUST_GROUP')) { $values['grouped'] = 1; } elseif ($instance->get_constant('CAN_GROUP')) { $values['grouped'] = @$_POST['grouped']; } if ($instance->get_constant('HAS_EXCERPTS')) { $values['excerpt'] = $_POST['excerpt']; } $values['feed_label'] = $_POST['feed_label']; $values['icon_url'] = $_POST['icon_type'] == 3 ? $_POST['icon_url'] : ''; $values['auto_icon'] = $_POST['icon_type'] == 2; if ($_POST['owner'] != $instance->owner_id && current_user_can('manage_options') && $_POST['owner']) { $usero = new WP_User($_POST['owner']); $owner = $usero->data; $instance->owner_id = $_POST['owner']; $instance->owner = $owner->display_name; } if (!count($errors)) { $instance->options = $values; $instance->save(); unset($_POST); } } elseif (@$_POST['truncate']) { $instance->truncate(); $instance->refresh(); } } break; case 'add': if ($_POST) { $class_name = $this->get_feed($_GET['feed']); if (!$class_name) { break; } $feed = new $class_name($this); $values = array(); $options = $feed->get_options(); foreach ($options as $option => $option_meta) { if ($option_meta[1] && !$_POST[$option]) { $errors[] = $option_meta[0] . ' is required.'; } else { $values[$option] = stripslashes($_POST[$option]); } } if ($feed->get_constant('MUST_GROUP')) { $values['grouped'] = 1; } elseif ($feed->get_constant('CAN_GROUP')) { $values['grouped'] = @$_POST['grouped']; } if ($feed->get_constant('HAS_EXCERPTS')) { $values['excerpt'] = $_POST['excerpt']; } $values['feed_label'] = $_POST['feed_label']; $values['icon_url'] = $_POST['icon_type'] == 3 ? $_POST['icon_url'] : ''; $values['auto_icon'] = $_POST['icon_type'] == 2; if (current_user_can('manage_options') && $_POST['owner']) { $feed->owner_id = $_POST['owner']; $usero = new WP_User($feed->owner_id); $owner = $usero->data; $feed->owner = $owner->display_name; } else { $feed->owner_id = $userdata->ID; $feed->owner = $userdata->display_name; } $feed->options = $values; if (!count($errors)) { if (!($error = $feed->test())) { $result = $feed->save(); if ($result !== false) { unset($_POST); unset($_REQUEST['op']); $msg_arr = $feed->refresh(null, true); if ($msg_arr[0] !== false) { $message = $this->__('A new %s feed was added to your Lifestream.', $feed->get_constant('NAME')); $feedmsgs[$feed->id] = $msg_arr[1]; } } } else { $errors[] = $error; } } } break; } break; } $lifestream =& $this; ob_start(); ?> <style type="text/css"> .feedlist { margin: 0; padding: 0; } .feedlist li { list-style: none; display: inline; } .feedlist li a { float: left; display: block; padding: 2px 2px 2px 20px; min-height: 16px; background-repeat: no-repeat; background-position: left center; margin: 1px; width: 150px; text-decoration: none; } .feedlist li a:hover { background-color: #e9e9e9; } .success { color: #397D33; background-color: #D1FBCA; } .error { border-color: #E25F53; color: #E25F53; } td.icon { padding: 7px 0 9px 10px; } </style> <br /> <?php if (count($errors)) { ?> <div id="message" class="error"><p><strong><?php $this->_e('There were errors with your request:'); ?> </strong></p><ul> <?php foreach ($errors as $error) { ?> <li><?php echo nl2br(Lifestream_Feed::parse_urls(htmlspecialchars($error))); ?> </li> <?php } ?> </ul></div> <?php } elseif ($message) { ?> <div id="message" class="updated fade"><p><strong><?php echo $message; ?> </strong></p></div> <?php } ?> <div class="wrap"> <?php switch ($_GET['page']) { case 'lifestream-errors.php': $page = !empty($_GET['paged']) ? $_GET['paged'] : 1; switch (isset($_REQUEST['op']) ? strtolower($_REQUEST['op']) : null) { case 'clear': $wpdb->query("DELETE FROM `" . $wpdb->prefix . "lifestream_error_log`"); break; } $start = ($page - 1) * LIFESTREAM_ERRORS_PER_PAGE; $end = $page * LIFESTREAM_ERRORS_PER_PAGE; $wpdb->query("UPDATE `" . $wpdb->prefix . "lifestream_error_log` SET has_viewed = 1"); $results =& $wpdb->get_results("SELECT COUNT(*) as `count` FROM `" . $wpdb->prefix . "lifestream_error_log`"); $number_of_pages = ceil($results[0]->count / LIFESTREAM_EVENTS_PER_PAGE); $results =& $wpdb->get_results($wpdb->prepare("SELECT t1.*, t2.`feed`, t2.`options` FROM `" . $wpdb->prefix . "lifestream_error_log` as t1 LEFT JOIN `" . $wpdb->prefix . "lifestream_feeds` as t2 ON t1.`feed_id` = t2.`id` ORDER BY t1.`timestamp` DESC LIMIT %d, %d", $start, $end)); include LIFESTREAM_PATH . '/pages/errors.inc.php'; break; case 'lifestream-maintenance.php': include LIFESTREAM_PATH . '/pages/maintenance.inc.php'; break; case 'lifestream-changelog.php': include LIFESTREAM_PATH . '/pages/changelog.inc.php'; break; case 'lifestream-forums.php': include LIFESTREAM_PATH . '/pages/forums.inc.php'; break; case 'lifestream-settings.php': $lifestream_digest_intervals = array('weekly' => $this->__('Weekly'), 'daily' => $this->__('Daily'), 'hourly' => $this->__('Hourly')); include LIFESTREAM_PATH . '/pages/settings.inc.php'; break; case 'lifestream-events.php': $page = !empty($_GET['paged']) ? $_GET['paged'] : 1; $start = ($page - 1) * LIFESTREAM_EVENTS_PER_PAGE; $end = $page * LIFESTREAM_EVENTS_PER_PAGE; if (!current_user_can('manage_options')) { $rows =& $wpdb->get_row($wpdb->prepare("SELECT COUNT(*) as `count` FROM `" . $wpdb->prefix . "lifestream_event` WHERE `owner_id` = %d", $userdata->ID)); $number_of_pages = ceil($rows->count / LIFESTREAM_EVENTS_PER_PAGE); $rows =& $wpdb->get_results($wpdb->prepare("SELECT t1.*, t2.`feed`, t2.`options` FROM `" . $wpdb->prefix . "lifestream_event` as t1 JOIN `" . $wpdb->prefix . "lifestream_feeds` as t2 ON t1.`feed_id` = t2.`id` WHERE t1.`owner_id` = %d ORDER BY t1.`timestamp` DESC LIMIT %d, %d", $userdata->ID, $start, $end)); } else { $rows =& $wpdb->get_row("SELECT COUNT(*) as `count` FROM `" . $wpdb->prefix . "lifestream_event`"); $number_of_pages = ceil($rows->count / LIFESTREAM_EVENTS_PER_PAGE); $rows =& $wpdb->get_results($wpdb->prepare("SELECT t1.*, t2.`feed`, t2.`options` FROM `" . $wpdb->prefix . "lifestream_event` as t1 JOIN `" . $wpdb->prefix . "lifestream_feeds` as t2 ON t1.`feed_id` = t2.`id` ORDER BY t1.`timestamp` DESC LIMIT %d, %d", $start, $end)); } $results = array(); foreach ($rows as $result) { $results[] = new Lifestream_Event($lifestream, $result); } unset($rows); include LIFESTREAM_PATH . '/pages/events.inc.php'; break; default: switch (isset($_REQUEST['op']) ? strtolower($_REQUEST['op']) : null) { case 'edit': include LIFESTREAM_PATH . '/pages/edit-feed.inc.php'; break; case 'add': $identifier = $_GET['feed']; $class_name = $this->get_feed($identifier); if (!$class_name) { break; } $feed = new $class_name($this); $options = $feed->get_options(); include LIFESTREAM_PATH . '/pages/add-feed.inc.php'; break; default: $page = !empty($_GET['paged']) ? $_GET['paged'] : 1; $start = ($page - 1) * LIFESTREAM_FEEDS_PER_PAGE; $end = $page * LIFESTREAM_FEEDS_PER_PAGE; if (!current_user_can('manage_options')) { $rows =& $wpdb->get_row($wpdb->prepare("SELECT COUNT(*) as `count` FROM `" . $wpdb->prefix . "lifestream_feeds` WHERE `owner_id` = %d", $userdata->ID)); $number_of_pages = ceil($rows->count / LIFESTREAM_FEEDS_PER_PAGE); $rows =& $wpdb->get_results($wpdb->prepare("SELECT t1.*, (SELECT COUNT(1) FROM `" . $wpdb->prefix . "lifestream_event` WHERE `feed_id` = t1.`id`) as `events` FROM `" . $wpdb->prefix . "lifestream_feeds` as t1 WHERE t1.`owner_id` = %d ORDER BY `id` LIMIT %d, %d", $userdata->ID, $start, $end)); } else { $rows =& $wpdb->get_row("SELECT COUNT(*) as `count` FROM `" . $wpdb->prefix . "lifestream_feeds`"); $number_of_pages = ceil($rows->count / LIFESTREAM_FEEDS_PER_PAGE); $rows =& $wpdb->get_results($wpdb->prepare("SELECT t1.*, (SELECT COUNT(1) FROM `" . $wpdb->prefix . "lifestream_event` WHERE `feed_id` = t1.`id`) as `events` FROM `" . $wpdb->prefix . "lifestream_feeds` as t1 ORDER BY `id` LIMIT %d, %d", $start, $end)); } $results = array(); foreach ($rows as $result) { $results[] = Lifestream_Feed::construct_from_query_result($this, $result); } if ($results !== false) { include LIFESTREAM_PATH . '/pages/feeds.inc.php'; } break; } break; } ?> </div> <?php ob_end_flush(); }
echo $lifestream->get_icon_media_url($result->feed . '.png'); ?> "/></td> <td><?php } else { ?> <td colspan="2"><?php } if ($result->has_viewed) { ?> <strong><?php echo Lifestream_Feed::parse_urls(htmlspecialchars($result->message)); ?> </strong><?php } else { echo Lifestream_Feed::parse_urls(htmlspecialchars($result->message)); } ?> </td> <td><?php echo date($date_format, $result->timestamp); ?> </td> </tr> <?php } ?> </tbody> </table> <div class="tablenav"> <?php