function handleSearch($p) { $list = UserList::getUsers($p['q']); echo '<h2>Showing users matching <u>' . $p['q'] . '</u>'; echo ' (' . count($list) . ' hits)</h2>'; $dt = new YuiDatatable(); $dt->addColumn('id', 'Username', 'link', 'u/profile/', 'name'); $dt->addColumn('time_last_active', 'Last active'); $dt->setDataSource($list); echo $dt->render(); }
<?php //TODO: ability to delete userdata field //TODO: abiltiy to mark a userdata field as required at registration (such as email) namespace cd; $session->requireSuperAdmin(); switch ($this->owner) { case 'list': echo '<h1>Existing userdata fields</h1>'; $list = UserDataField::getAll(); $dt = new YuiDatatable(); $dt->addColumn('id', 'Name', 'link', 'a/userdata/edit/', 'name'); $dt->addColumn('label', 'Label'); $dt->addColumn('type', 'Type', 'array', UserDataField::getTypes()); $dt->setDataSource($list); echo $dt->render(); echo '<br/>'; echo '» ' . ahref('a/userdata/new', 'Create new field'); break; case 'new': function newSubmit($p) { $f = new UserDataField(); $f->name = $p['name']; $f->type = $p['type']; $f->label = $p['label']; $f->id = $f->store(); if ($f->type == UserDataField::RADIO) { js_redirect('a/userdata/edit/' . $f->id); } else {
<?php namespace cd; $session->requireAdmin(); if (!$this->owner) { $this->owner = 'default'; } switch ($this->owner) { case 'default': echo '<h1>User feedback</h1>'; $list = Feedback::getUnanswered(); // d($list); $dt = new YuiDatatable(); $dt->addColumn('id', '#', 'link', 'a/feedback/handle/', 'subject'); $dt->addColumn('time_created', 'Created'); $dt->addColumn('from', 'From', 'link', 'u/profile/'); $dt->setDataSource($list); echo $dt->render(); break; case 'handle': // child = tblFeedback.id function fbHandle($p) { $msg_id = Message::send($p['to'], $p['msg']); Feedback::markHandled($p['owner'], $msg_id); js_redirect('a/feedback/default'); } $fb = Feedback::get($this->child); if (!$fb) { die('Eppp');
* File manager */ // XXX: verify before deleting file! //TODO: limit selection by selecting image type, dates, etc //TODO: pagination namespace cd; $session->requireAdmin(); if (!$this->owner) { $this->owner = 'list'; } switch ($this->owner) { case 'list': echo '<h1>All uploaded files</h1>'; $list = File::getList(); $dt = new YuiDatatable(); $dt->addColumn('id', '#', 'link', 'a/files/details/', 'name'); $dt->addColumn('time_uploaded', 'Uploaded'); $dt->addColumn('uploader', 'Uploader', 'link', 'u/profile/'); $dt->addColumn('type', 'Type'); $dt->addColumn('size', 'Size'); $dt->addColumn('mimetype', 'Mime'); $dt->setDataSource($list); echo $dt->render(); break; case 'delete': if (confirmed('Are you sure you want to permanently delete this file?')) { File::unlink($this->child); js_redirect('a/files/list'); } break;
<?php //TODO later: ability to export results (csv, xls, ...?) namespace cd; $session->requireAdmin(); if (!$this->owner) { $this->owner = 'list'; } switch ($this->owner) { case 'list': echo '<h1>Manage polls</h1>'; $list = PollItem::getPolls(SITE); $dt = new YuiDatatable(); $dt->addColumn('id', '#', 'link', 'a/polls/edit/', 'text'); $dt->addColumn('time_start', 'Starts'); $dt->addColumn('time_end', 'Ends'); $dt->addColumn('time_created', 'Created'); $dt->setDataSource($list); echo $dt->render(); echo '<br/>'; echo ahref('a/polls/add', 'Add new poll'); break; case 'edit': // child = poll id function editPoll($p) { if (empty($_POST['poll_q'])) { return; } PollItem::updatePoll($p['poll'], $p['poll_q']);
namespace cd; switch ($this->owner) { case 'online': $list = UserList::getUsersOnline(); echo '<h2>Showing all users online'; echo ' (' . count($list) . ' hits)</h2>'; $dt = new YuiDatatable(); $dt->addColumn('id', 'Username', 'link', 'u/profile/', 'name'); $dt->addColumn('time_last_active', 'Last active'); $dt->addColumn('type', 'Type', 'array', getSessionTypes()); $dt->setDataSource($list); //$dt->setRowsPerPage(10); echo $dt->render(); break; case 'newest': // shows the newest registered users on the site echo '<h2>Showing newest members</h2>'; $list = UserList::getNewUsers(5); $dt = new YuiDatatable(); $dt->addColumn('id', 'Username', 'link', 'u/profile/', 'name'); $dt->addColumn('time_created', 'Time created'); $dt->addColumn('type', 'Type', 'array', getSessionTypes()); $dt->setDataSource($list); //$dt->setRowsPerPage(10); echo $dt->render(); break; default: throw new \Exception('no such view: ' . $this->owner); }
<?php namespace cd; $session->requireAdmin(); if (!$this->owner) { $this->owner = 'default'; } switch ($this->owner) { case 'default': echo '<h2>FAQ items</h2>'; $list = FaqItem::getAll(); $dt = new YuiDatatable(); $dt->addColumn('id', 'Question', 'link', 'a/faq/edit/', 'question'); $dt->addColumn('time_created', 'Created'); $dt->addColumn('creator', 'Creator', 'link', 'u/profile/'); $dt->setDataSource($list); echo $dt->render(); echo '<br/>'; echo '» ' . ahref('a/faq/add', 'Add new FAQ'); break; case 'add': function createHandler($p) { $session = SessionHandler::getInstance(); $o = new FaqItem(); $o->question = $p['q']; $o->answer = $p['a']; $o->creator = $session->id; $o->time_created = sql_datetime(time()); $o->id = $o->store();
<?php namespace cd; $session->requireAdmin(); echo '<h1>Available hash functions</h1>'; $data = "The quick brown fox jumps over the lazy dog"; echo 'Hash calculated from string <b>' . $data . '</b><br/>'; $list = array(); foreach (hash_algos() as $h) { $r = hash($h, $data); $list[] = array('algo' => $h, 'len' => strlen($r), 'hash' => $r); } $dt = new YuiDatatable(); $dt->addColumn('algo', 'Algo'); $dt->addColumn('len', 'Length'); $dt->addColumn('hash', 'Hash'); $dt->setRowsPerPage(50); $dt->setDataSource($list); echo $dt->render();
//, 'link', 'a/moderation/handle/', 'name'); $dt->addColumn('owner', 'Owner', 'link', 'a/user/', 'name'); $dt->addColumn('type', 'Type', 'array', getModerationTypes()); $dt->addColumn('time_created', 'Created'); $dt->addColumn('time_handled', 'Approved'); $dt->addColumn('handled_by', 'Approved by', 'link', 'a/user/', 'name'); $dt->addColumn('data', 'Data'); $dt->addColumn('reference', 'Reference'); $dt->setDataSource($list); echo $dt->render(); break; case 'denied': echo '<h1>Denied items in Moderation queue</h1>'; $list = ModerationObject::getDenied(); //d( $list ); $dt = new YuiDatatable(); $dt->addColumn('id', 'Id'); //, 'link', 'a/moderation/handle/', 'name'); $dt->addColumn('owner', 'Owner', 'link', 'a/user/', 'name'); $dt->addColumn('type', 'Type', 'array', getModerationTypes()); $dt->addColumn('time_created', 'Created'); $dt->addColumn('time_handled', 'Denied'); $dt->addColumn('handled_by', 'Denied by', 'link', 'a/user/', 'name'); $dt->addColumn('data', 'Data'); $dt->addColumn('reference', 'Reference'); $dt->setDataSource($list); echo $dt->render(); break; case 'handle': if (!$this->child) { die('SADFGFG');
echo 'Username filter: ' . xhtmlInput('usearch'); echo xhtmlSubmit('Search'); echo xhtmlFormClose(); echo '<br/>'; if (isset($_GET['online'])) { $list = UserList::getUsersOnline($filter); echo '<h2>Showing all users online'; } else { $list = UserList::getUsers($filter); echo '<h2>Showing all users'; } if ($filter) { echo ', matching <u>' . $filter . '</u>'; } echo ' (' . count($list) . ' hits)</h2>'; $dt = new YuiDatatable(); $dt->addColumn('id', 'Username', 'link', 'a/user/', 'name'); $dt->addColumn('email', 'E-mail'); $dt->addColumn('time_last_active', 'Last active'); $dt->addColumn('last_ip', 'Last IP'); $dt->addColumn('time_created', 'Created'); $dt->addColumn('is_online', 'Online?'); $dt->addColumn('type', 'Type', 'array', getSessionTypes()); // $dt->addColumn('userlevel', 'User level', 'array', getUserLevels() ); /* //XXX row coloring not fully working in YuiDatatable $header->embedCss( '.yui-skin-sam .yui-dt tr.green_mark,'. '.yui-skin-sam .yui-dt tr.green_mark td.yui-dt-asc,'. '.yui-skin-sam .yui-dt tr.green_mark td.yui-dt-desc,'. '.yui-skin-sam .yui-dt tr.green_mark td.yui-dt-asc,'. '.yui-skin-sam .yui-dt tr.green_mark td.yui-dt-desc {'.
if (Bookmark::exists(BOOKMARK_USERBLOCK, $session->id, $user_id)) { echo 'User has blocked you from access'; return; } echo '<h1>Guestbook for ' . $user->name . '</h1>'; $form = new XhtmlForm('msg'); $form->addHidden('to', $this->owner); $form->addTextarea('body', 'Body'); $form->addSubmit('Send'); $form->setFocus('body'); $form->onSubmit('return check_gb(this);'); $form->setHandler('gbHandler'); $form->handle(); // to get latest added entry in the following query $list = Guestbook::getEntries($user_id); $dt = new YuiDatatable(); $dt->addColumn('creator', 'Written by'); /// XXXX show username, show link to user page $dt->addColumn('time_created', 'When'); $dt->addColumn('body', 'Msg'); $dt->setSortOrder('time_created', 'desc'); $dt->setDataSource($list); echo $dt->render(); if ($user_id == $session->id) { return; } $header->registerJsFunction('function check_gb(frm)' . '{' . 'if (!frm.body.value)' . 'return false;' . 'return true;' . '}'); function gbHandler($p) { $session = SessionHandler::getInstance(); if ($session->id == $p['to']) {
<?php namespace cd; $session->requireLoggedIn(); switch ($this->owner) { case 'profile': echo '<h2>Showing the most recent visits of your profile page</h2>'; $list = Visit::getAll(PROFILE, $session->id); $dt = new YuiDatatable(); $dt->addColumn('ref', 'User', 'link', 'u/profile/', 'name'); $dt->addColumn('time', 'Time of visit'); $dt->setDataSource($list); //$dt->setRowsPerPage(10); echo $dt->render(); break; default: throw new \Exception('no such view: ' . $this->owner); }
echo '<td>' . xhtmlInput('setting_name_' . $set['id'], $set['name']) . '</td>'; echo '<td>' . xhtmlInput('setting_val_' . $set['id'], $set['value']) . '</td>'; echo '<td><a href="' . relurl_add(array('remove_setting' => $set['name'])) . '">Remove</a></td>'; echo '</tr>'; } echo '</table>'; echo xhtmlSubmit('Save changes'); echo xhtmlFormClose() . '<br/><br/>'; echo '<h3>Add new user setting</h3>'; echo xhtmlForm('new_setting'); echo 'Name: ' . xhtmlInput('setting_name') . ' '; echo 'Value: ' . xhtmlInput('setting_val') . ' '; echo xhtmlSubmit('Add'); echo xhtmlFormClose() . '<br/><br/>'; echo '<h2>Login history</h2>'; $dt = new YuiDatatable(); $dt->addColumn('timeCreated', 'Timestamp'); $dt->addColumn('IP', 'IP'); $dt->addColumn('userAgent', 'User agent'); $dt->setSortOrder('timeCreated', 'desc'); $dt->setDataSource(LoginEntry::getHistory($user->id)); $dt->setRowsPerPage(10); echo $dt->render(); if ($session->id != $this->owner) { echo '» <a href="' . relurl_add(array('remove' => 1)) . '">Remove user</a><br/><br/>'; } /* echo '<h2>'.t('Userdata').'</h2>'; editUserdataSettings($user->id); echo '<h2>'.t('Events').'</h2>';