Exemplo n.º 1
0
 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;
 }
Exemplo n.º 2
0
 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;
 }
Exemplo n.º 3
0
 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;
 }
Exemplo n.º 4
0
 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;
 }
Exemplo n.º 5
0
 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);
 }
Exemplo n.º 6
0
<?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"]
Exemplo n.º 7
0
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;
}
Exemplo n.º 8
0
 public function requireSSL()
 {
     App::requireSSL();
     return $this;
 }
Exemplo n.º 9
0
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='
		}"
Exemplo n.º 10
0
<?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 {
Exemplo n.º 11
0
<?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;
    }
}
Exemplo n.º 12
0
<?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;
    }
}
Exemplo n.º 13
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);
Exemplo n.º 14
0
<?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">&laquo;</span>
				</a>
			</li>
			<li v-show="pages.length  > 0 && page < pages[pages.length - 1]">
Exemplo n.º 15
0
<?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';
Exemplo n.º 16
0
<?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>
Exemplo n.º 17
0
 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;
 }
Exemplo n.º 18
0
 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;
 }
Exemplo n.º 19
0
<?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;
}
Exemplo n.º 20
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;
 }
Exemplo n.º 21
0
<?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');
        }
    }
Exemplo n.º 22
0
<?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">
Exemplo n.º 23
0
    /**
     * @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;
    }
Exemplo n.º 24
0
<?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;
}
Exemplo n.º 25
0
 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();
 }
Exemplo n.º 26
0
 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;
 }
Exemplo n.º 27
0
 public function __construct()
 {
     $this->segment = App::get()->session->getSegment(__CLASS__);
 }
Exemplo n.º 28
0
<?php

use Enpowi\App;
use Enpowi\Modules\Module;
Module::is();
App::user()->logout();
echo json_encode([]);
Exemplo n.º 29
0
<?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]);
Exemplo n.º 30
0
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