public static function isCaptchaMatch($phraseAttempt) { $app = Enpowi\App::get(); $segment = $app->session->getSegment(__CLASS__); $phrase = $segment->get('phrase'); if (isset($phrase)) { return $phrase === $phraseAttempt; } return false; }
public static function checkIn($number) { $bean = R::findOne('record', ' number = :number AND isnull(`in`) ', ['number' => $number]); if ($bean === null) { return null; } $bean->in = time(); $bean->checkInBy = App::user()->id; $record = new Record($number, $bean); R::store($bean); return $record; }
public function in($name) { $json = App::param($name); if (is_array($json)) { $objects = []; foreach ($json as $jsonItem) { $objects[] = $this->serializer->unserialize($jsonItem); } return $objects; } $object = $this->serializer->unserialize($json); return $object; }
public function inShare() { $bean = $this->bean(); $user = App::user(); //owner if ($bean->userId === App::user()->id) { return true; } //shared to group foreach ($user->groups as $userGroup) { if (isset($bean->sharedGroupList[$userGroup->id])) { return true; } } //shared to specific user if (isset($bean->sharedUserList[$user->id])) { return true; } return false; }
public function replace($content = '') { if (empty($this->name)) { throw new Exception('Page needs name before it can be saved'); } $userBean = Enpowi\App::user()->bean(); R::exec('UPDATE page SET is_revision = 1 WHERE name = ? and is_revision = 0', [$this->name]); $oldBean = $this->_bean; $originalUserBean = $userBean; //TODO: ensure createdBy is set once and contributors is an incremental list $bean = R::dispense('page'); $bean->name = $this->name; $bean->content = $content; $bean->created = R::isoDateTime(); $bean->user = $originalUserBean; $bean->isRevision = false; if ($oldBean !== null) { $bean->sharedUser = $oldBean->sharedUser; } $bean->sharedUser[] = $userBean; R::store($bean); return new Page($this->name, $bean); }
<?php use Enpowi\Modules\DataOut; use Enpowi\Modules\Module; use Enpowi\Files\Gallery; use Enpowi\App; Module::is(); $g = App::paramInt('g'); $data = (new DataOut())->add('gallery', new Gallery($g))->add('g', $g)->out(); ?> <form data="<?php echo $data; ?> " class="form container" action="gallery" v-module> <h3><span v-t>Upload image to:</span> {{ gallery.name }}</h3> <input id="image" name="files[]" type="file" multiple="true"> </form> <link href="vendor/bootstrap-fileinput/css/fileinput.min.css" rel="stylesheet"> <script src="vendor/bootstrap-fileinput/js/fileinput.min.js"></script> <script> var data = datas[0]; $(app.getElementById('image')).fileinput({ uploadAsync: false, uploadUrl: "modules/?module=gallery&component=uploadService&g=" + data.g, allowedFileExtensions: ["jpg", "png", "gif"]
use Enpowi\App; use Enpowi\Users\User; use Enpowi\Modules\Module; use RedBeanPHP\R; Module::is(); switch (App::param('action')) { case 'delete': foreach (App::param('emails') as $email) { (new User($email))->remove(); } echo 1; break; case 'impersonate': $user = new User(App::param('impersonateUser')); echo App::get()->authentication->impersonate($user) ? 1 : -1; break; case 'impersonateAnonymous': App::get()->authentication->impersonateAnonymous(); echo 1; break; case 'find': $beans = R::findAll('user', 'email like :like limit 5', ['like' => '%' . App::param('query') . '%']); $users = []; foreach ($beans as $bean) { $users[] = $bean->email; } echo json_encode($users); break; default: echo 0; }
public function requireSSL() { App::requireSSL(); return $this; }
use Enpowi\Users\Group; use Enpowi\Modules\DataOut; use Enpowi\Modules\Module; Module::is(); $app = App::get(); $auth = $app->authentication; $page = App::paramIs('page') ? App::paramInt('page') : 1; $users = null; if (App::paramIs('email')) { $users = [User::getByEmail(App::param('email'))]; $pages = 0; } else { $users = User::users($page); $pages = User::pages(); } (new DataOut())->add('email', App::param('email'))->add('pages', $pages)->add('page', $page)->add('users', $users)->add('availableGroups', Group::groups())->add('impersonateUser', $auth->isImpersonate() ? $auth->getUser() : [])->add('action', '')->bind(); ?> <form v-module action="users/listService" v-bind:data-done="page ? 'users/list?page=' + page : 'users/list'" class="container"> <h3><span v-t>Users</span> <a v-title="New User" href="#/users/new"><span class="glyphicon glyphicon-plus-sign"></span></a></h3> <input name="q" v-placeholder="find user" v-find="{ find: 'users/listService?action=find&q=', url: 'users/list?email=' }"
<?php use Enpowi\App; use Enpowi\Modules\Module; use Enpowi\Modules\DataOut; Module::is(); $data = (new DataOut())->add('cardScale', 100)->add('territory', (new \ETM\Territory(App::param('number')))->bindGeoJson())->add('controlsVisible', false)->out(); ?> <div class="container" data="<?php echo $data; ?> "> <title>Territory {{ territory.number }}</title> <style> #card-container { margin-left: auto; margin-right: auto; position: relative; width: {{ 1000 * (cardScale / 100)}}px; } #card { width: {{ 1000 * (cardScale / 100) }}px; } #map { height: {{ 600 * (cardScale / 100) }}px; width: {{ 1000 * (cardScale / 100) }}px; } #map-mini { height: {{ 375 * (cardScale / 100) }}px; } #card-label {
<?php require_once 'setup/run.php'; use Enpowi\App; use Enpowi\Modules\Module; $moduleName = App::param('module') ?: App::param('m'); $componentName = App::param('component') ?: App::param('c'); $path = dirname(__FILE__); $component = App::loadComponent($path, $moduleName, $componentName); if ($component !== null && !empty($component->file)) { if ($component->isActive()) { Module::run(); $component->runInit(); require_once $component->file; $paramResponse = Module::getParamResponse(); if ($paramResponse !== null) { echo json_encode(['paramResponse' => $paramResponse]); } else { $successResponse = Module::getSuccessResponse(); if ($successResponse !== null) { echo json_encode(['successResponse' => $successResponse]); } } } else { require_once $component->file; } } else { if (!defined('testing')) { echo -1; } }
<?php use Enpowi\App; use Enpowi\Modules\Module; use ETM\Publisher; Module::is(); if (App::param('action') === 'merge') { $publisher = App::param('publisher'); $publishers = App::params('publishers'); if (Publisher::merge($publisher, $publishers) > 0) { echo 1; } else { echo 0; } }
<?php use Enpowi\Users\User; use Enpowi\App; use Enpowi\Modules\Module; Module::is(); $response = []; $user = User::getByEmailAndPassword(App::param('email'), App::param('password')); if ($user === null) { $response['paramResponse'] = ['email' => 'Invalid email or password']; $response['id'] = -1; } else { $login = $user->login(); $response['id'] = $user->id; if (App::paramIs('remember')) { App::get()->authentication->rememberUserId(); } else { App::get()->authentication->forgetUserId(); } } echo json_encode($response);
<?php use Enpowi\App; use Enpowi\Blog\Post; use Enpowi\Modules\DataOut; use Enpowi\Modules\Module; Module::is(); $page = App::paramInt('page'); $showAll = App::user()->hasPerm('blog', 'edit'); $data = (new DataOut())->add('posts', Post::posts($page, $showAll))->add('pages', Post::pages($showAll))->add('page', $page)->out(); ?> <title>{{session.siteName }} - Blog</title> <div v-module data="<?php echo $data; ?> " class="container"> <!--TODO page name--> <h3><span v-t>Blog Posts</span> <a v-title="New Post" href="#/blog/edit"><span class="glyphicon glyphicon-plus-sign"></span></a> </h3> <nav class="pull-right"> <ul class="pagination"> <li v-show="page > 0"> <a href="#/" aria-label="Previous"> <span aria-hidden="true">«</span> </a> </li> <li v-show="pages.length > 0 && page < pages[pages.length - 1]">
<?php use Enpowi\App; use Enpowi\Users\User; use Enpowi\Modules\Module; Module::is(); $user = User::fromId(App::param('id')); require path . '/modules/user/view.php';
<?php use Enpowi\Modules\DataOut; use Enpowi\App; use Enpowi\Pages\Page; use Enpowi\Modules\Module; Module::is(); $name = App::param('name'); $data = (new DataOut())->add('name', $name)->add('rendered', (new Page($name))->render())->out(); ?> <div v-module data="<?php echo $data; ?> " class="container"> <h3>{{ name }} <a v-title="History" href="#/page/history?name={{ name }}" v-show=" hasPerm('page', 'history') " class="pull-right button"><span class="glyphicon glyphicon-backward"></span></a> <a v-title="Edit" href="#/page/edit?name={{ name }}" v-show=" hasPerm('page', 'edit') " class="pull-right button"><span class="glyphicon glyphicon-edit"></span></a>
public static function users($pageNumber = 1) { $beans = R::findAll('user', ' order by email limit :offset, :count', ['offset' => App::pageOffset($pageNumber), 'count' => App::$pagingSize]); $users = []; foreach ($beans as $bean) { $users[] = new User($bean->email, $bean); } return $users; }
public function replace() { $user = App::user(); $existingBeans = R::findAll('territory', ' number = :number ', ['number' => $this->number]); foreach ($existingBeans as $bean) { $copy = R::dispense('territoryedit'); $copy->geoJson = $bean->geoJson; $copy->name = $bean->name; $copy->number = $bean->number; $copy->locality = $bean->locality; $copy->congregation = $bean->congregation; $copy->created = $bean->created; $copy->createdBy = $bean->createdBy; $copy->archived = time(); $copy->archivedBy = $user->id; R::store($copy); R::trash($bean); } $bean = R::dispense('territory'); $bean->geoJson = $this->geoJson; $bean->name = $this->name; $bean->number = $this->number; $bean->locality = $this->locality; $bean->congregation = $this->congregation; $bean->created = time(); $bean->createdBy = $user->id; R::store($bean); $this->_bean = $bean; return $this; }
<?php use Enpowi\App; use Enpowi\Users\User; use Enpowi\Modules\Module; Module::is(); switch (App::param('action')) { case 'delete': foreach (App::param('emails') as $email) { (new User($email))->remove(); } echo 1; break; case 'impersonate': $user = new User(App::param('impersonateUser')); echo App::get()->authentication->impersonate($user) ? 1 : -1; break; case 'impersonateAnonymous': App::get()->authentication->impersonateAnonymous(); echo 1; break; default: echo 0; }
public static function loadComponent($folder, $moduleName, $componentName = 'index') { $user = App::user(); if (empty($componentName)) { $componentName = 'index'; } App::log($moduleName, $componentName); if ($user->hasPerm($moduleName, $componentName)) { $module = new Modules\Module($folder, $moduleName); $component = new Modules\Component($module, $componentName); define('moduleName', $moduleName); define('componentName', $componentName); self::$module = $module; self::$component = $component; return $component; } return null; }
<?php use Enpowi\App; use Enpowi\Users\User; use Enpowi\Modules\Module; Module::is(); $user = App::user(); $password = App::param('password'); $passwordRepeat = App::param('passwordRepeat'); $update = App::paramBool('update'); $stop = false; Module::paramRespond('password', ''); Module::paramRespond('passwordRepeat', ''); Module::paramRespond('passwordUpdated', ''); if (empty($password)) { $stop = true; } if (!$stop && $password !== $passwordRepeat) { Module::paramRespond('passwordRepeat', 'Passwords do not match'); $stop = true; } if (!$stop && !User::isValidPassword($password)) { Module::paramRespond('password', 'Invalid'); $stop = true; } if (!$stop) { if ($update) { if ($user->updatePassword($password)) { Module::paramRespond('passwordUpdated', 'Password updated'); } }
<?php use Enpowi\App; use Enpowi\Users\User; use Enpowi\Users\Group; use Enpowi\Modules\DataOut; use Enpowi\Modules\Module; Module::is(); $app = App::get(); $auth = $app->authentication; $data = (new DataOut())->add('users', User::users())->add('availableGroups', Group::groups())->add('impersonateUser', $auth->isImpersonate() ? $auth->getUser() : [])->add('action', '')->out(); ?> <form v-module data="<?php echo $data; ?> " action="users/listService" data-done="users/list" class="container"> <h3><span v-t>Users</span> <a v-title="New User" href="#/users/new"><span class="glyphicon glyphicon-plus-sign"></span></a></h3> <table class="table"> <tbody> <tr> <td></td> <th v-t>Email</th> <th v-t>Created</th> <td> <span v-show="impersonateUser.email">
/** * @param User $user * @param int $pageNumber * @param bool|false $showAll * @return Post[] */ public static function userPosts(User $user, $pageNumber = 1, $showAll = false) { $beans = R::findAll('blog', ' where user_id = :user_id and ( true = :show_all or date(published_on) >= now() ) order by created limit :offset, :count', ['user_id' => $user->bean()->getID(), 'offset' => App::pageOffset($pageNumber), 'count' => App::$pagingSize, 'show_all' => $showAll]); $posts = []; foreach ($beans as $bean) { $posts[] = new Post($bean->name, $bean); } return $posts; }
<?php use Enpowi\App; use Enpowi\Modules\DataIn; use Enpowi\Types; use Enpowi\Modules\Module; Module::is(); $post = Types::Blog_Post((new DataIn())->in('post')); $post->bean(); $user = App::user(); if ($user->hasPerm('*', '*') || $post->user()->email === $user->email) { $post->replace(App::param('content')); echo 1; } else { echo -1; }
public static function create($name, $description) { $bean = R::dispense('gallery'); $bean->userId = App::user()->id; $bean->created = R::isoDateTime(); $gallery = new Gallery(null, $bean); return $gallery->setName($name)->setDescription($description)->save(); }
public static function getUserFiles() { $id = App::user()->id; $beans = R::findAll('file', ' user_id = :userId ', ['userId' => $id]); $files = []; foreach ($beans as $bean) { $files[] = !empty($bean->classType) ? new $bean->classType($bean) : new File($bean); } return $files; }
public function __construct() { $this->segment = App::get()->session->getSegment(__CLASS__); }
<?php use Enpowi\App; use Enpowi\Modules\Module; Module::is(); App::user()->logout(); echo json_encode([]);
<?php use Enpowi\App; use Enpowi\Users\User; use Enpowi\Modules\Module; Module::is(); $email = App::param('email'); $password = App::param('password'); $reply = []; $stop = false; if (!User::isEmailValid($email)) { $reply['email'] = 'Invalid'; $stop = true; } if (!User::isUnique($email)) { $reply['email'] = 'Already taken'; $stop = true; } if (!User::isValidPassword($password)) { $reply['password'] = '******'; $reply['repeatPassword'] = '******'; $stop = true; } if ($stop) { echo json_encode(['paramResponse' => $reply, 'id' => -1]); die; } $user = User::create($email, $password); echo json_encode(['id' => $user->id]);
use Enpowi\Modules\DataOut; Module::is(); $galleryId = App::paramInt('g'); $gallery = null; $images = null; $galleries = null; $galleriesImages = null; if ($galleryId > 0) { $possibleGallery = new Gallery($galleryId); if ($possibleGallery->userId === App::user()->id) { $gallery = $possibleGallery; $images = $gallery->images(App::paramInt('page')); } } else { $galleriesImages = []; $galleries = Gallery::galleries(App::get()->user()->id, App::paramInt('page')); foreach ($galleries as $_gallery) { $images = $_gallery->images(1); if (isset($images[0])) { $galleriesImages[] = $images[0]->hash; } } } (new DataOut())->add('galleries', $galleries)->add('galleriesImages', $galleriesImages)->add('gallery', $gallery)->add('images', $images)->add('g', $galleryId)->bind(); ?> <title>{{session.siteName}} - Gallery</title> <div v-module class="container"> <!--galleries list--> <div