my changes

This commit is contained in:
Arno Kaimbacher 2018-08-06 14:30:51 +02:00
parent 28301e4312
commit 8dc1f1b048
263 changed files with 36882 additions and 4453 deletions

View file

@ -1,41 +0,0 @@
<?php namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Contracts\Auth\Guard;
use Illuminate\Contracts\Auth\Registrar;
use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers;
class AuthController extends Controller {
/*
|--------------------------------------------------------------------------
| Registration & Login Controller
|--------------------------------------------------------------------------
|
| This controller handles the registration of new users, as well as the
| authentication of existing users. By default, this controller uses
| a simple trait to add these behaviors. Why don't you explore it?
|
*/
use AuthenticatesAndRegistersUsers;
//kalo sudah login redirect kemana
protected $redirectTo = '/';
/**
* Create a new authentication controller instance.
*
* @param \Illuminate\Contracts\Auth\Guard $auth
* @param \Illuminate\Contracts\Auth\Registrar $registrar
* @return void
*/
public function __construct(Guard $auth, Registrar $registrar)
{
$this->auth = $auth;
$this->registrar = $registrar;
$this->middleware('guest', ['except' => 'getLogout']);
}
}

View file

@ -0,0 +1,32 @@
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\SendsPasswordResetEmails;
class ForgotPasswordController extends Controller
{
/*
|--------------------------------------------------------------------------
| Password Reset Controller
|--------------------------------------------------------------------------
|
| This controller is responsible for handling password reset emails and
| includes a trait which assists in sending these notifications from
| your application to your users. Feel free to explore this trait.
|
*/
use SendsPasswordResetEmails;
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest');
}
}

View file

@ -0,0 +1,51 @@
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request;
class LoginController extends Controller
{
/*
|--------------------------------------------------------------------------
| Login Controller
|--------------------------------------------------------------------------
|
| This controller handles authenticating users for the application and
| redirecting them to your home screen. The controller uses a trait
| to conveniently provide its functionality to your applications.
|
*/
use AuthenticatesUsers;
/**
* Where to redirect users after login.
*
* @var string
*/
protected $redirectTo = '/';
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest', ['except' => 'logout']);
}
public function logout(Request $request)
{
$this->guard()->logout();
$request->session()->flush();
$request->session()->regenerate();
return redirect('/');
}
}

View file

@ -1,38 +0,0 @@
<?php namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Contracts\Auth\Guard;
use Illuminate\Contracts\Auth\PasswordBroker;
use Illuminate\Foundation\Auth\ResetsPasswords;
class PasswordController extends Controller {
/*
|--------------------------------------------------------------------------
| Password Reset Controller
|--------------------------------------------------------------------------
|
| This controller is responsible for handling password reset requests
| and uses a simple trait to include this behavior. You're free to
| explore this trait and override any methods you wish to tweak.
|
*/
use ResetsPasswords;
/**
* Create a new password controller instance.
*
* @param \Illuminate\Contracts\Auth\Guard $auth
* @param \Illuminate\Contracts\Auth\PasswordBroker $passwords
* @return void
*/
public function __construct(Guard $auth, PasswordBroker $passwords)
{
$this->auth = $auth;
$this->passwords = $passwords;
$this->middleware('guest');
}
}

View file

@ -0,0 +1,71 @@
<?php
namespace App\Http\Controllers\Auth;
use App\User;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Validator;
use Illuminate\Foundation\Auth\RegistersUsers;
class RegisterController extends Controller
{
/*
|--------------------------------------------------------------------------
| Register Controller
|--------------------------------------------------------------------------
|
| This controller handles the registration of new users as well as their
| validation and creation. By default this controller uses a trait to
| provide this functionality without requiring any additional code.
|
*/
use RegistersUsers;
/**
* Where to redirect users after registration.
*
* @var string
*/
protected $redirectTo = '/';
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest');
}
/**
* Get a validator for an incoming registration request.
*
* @param array $data
* @return \Illuminate\Contracts\Validation\Validator
*/
protected function validator(array $data)
{
return Validator::make($data, [
'name' => 'required|max:255',
'email' => 'required|email|max:255|unique:users',
'password' => 'required|min:6|confirmed',
]);
}
/**
* Create a new user instance after a valid registration.
*
* @param array $data
* @return User
*/
protected function create(array $data)
{
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
]);
}
}

View file

@ -0,0 +1,39 @@
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\ResetsPasswords;
class ResetPasswordController extends Controller
{
/*
|--------------------------------------------------------------------------
| Password Reset Controller
|--------------------------------------------------------------------------
|
| This controller is responsible for handling password reset requests
| and uses a simple trait to include this behavior. You're free to
| explore this trait and override any methods you wish to tweak.
|
*/
use ResetsPasswords;
/**
* Where to redirect users after resetting their password.
*
* @var string
*/
protected $redirectTo = '/';
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest');
}
}

View file

@ -1,96 +1,82 @@
<?php namespace App\Http\Controllers;
<?php
namespace App\Http\Controllers;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\Book;
use App\Category;
use App\Project;
use App\Shelf;
use App\Http\Requests\BookRequest;
use Illuminate\Http\Request;
use Illuminate\View\View;
class BookController extends Controller {
class BookController extends Controller
{
public function __construct()
{
$this->middleware('auth');
}
public function __construct()
{
public function index() : View
{
//$books = Book::with('category', 'shelf')->get();
$books = Book::with('project')->get();
return view('rdr.settings.book.book', compact('books'));
}
$this->middleware('auth');
public function add()
{
$categories = Project::pluck('name', 'id');
$shelves = Shelf::pluck('shelf', 'id');
$datum = date('Y-m-d');
$nowYear = substr($datum, 0, 4);
$years = array();
for ($jahr = 1990; $jahr <= $nowYear; $jahr++) {
$years[$jahr] = $jahr;
}
return view('rdr.settings.book.add', compact('categories', 'shelves', 'years'));
}
}
public function store(BookRequest $request)
{
$input = $request->all();
$book = Book::create($input);
session()->flash('flash_message', 'You have been addded 1 book!');
return redirect()->route('settings.book');
}
public function index()
{
$books = Book::with('category', 'shelf')->get();
public function edit($id)
{
$book = Book::findOrFail($id);
$categories = Project::pluck('name', 'id');
// $shelves = Shelf::pluck('shelf', 'id');
$datum = date('Y-m-d');
$nowYear = substr($datum, 0, 4);
$years = array();
for ($jahr = 1990; $jahr <= $nowYear; $jahr++) {
$years[$jahr] = $jahr;
}
return view('rdr.settings.book.edit', compact('book', 'categories', 'years'));
//return view('rdr.settings.book.edit', compact('book', 'categories', 'shelves', 'years'));
}
return view('lms.settings.book.book', compact('books'));
}
public function add()
{
$categories = Category::lists('category', 'id');
$shelves = Shelf::lists('shelf', 'id');
$tanggal = date('Y-m-d');
$ambilTahun = substr($tanggal, 0, 4);
for($tahun = 1990; $tahun <= $ambilTahun; $tahun++){
$years[] = $tahun;
}
return view('lms.settings.book.add', compact('categories', 'shelves', 'years'));
}
public function store(BookRequest $request)
{
$input = $request->all();
$book = Book::create($input);
session()->flash('flash_message', 'You have been addded 1 book!');
return redirect()->route('settings.book');
}
public function edit($id)
{
$book = Book::findOrFail($id);
$categories = Category::lists('category', 'id');
$shelves = Shelf::lists('shelf', 'id');
return view('lms.settings.book.edit', compact('book', 'categories', 'shelves'));
}
public function update($id, BookRequest $request)
{
$book = Book::findOrFail($id);
$input = $request->all();
$book->update($input);
session()->flash('flash_message', 'You have been updated 1 book!');
return redirect()->route('settings.book');
}
public function delete($id)
{
$book = Book::findOrFail($id);
$book->delete();
session()->flash('flash_message', 'You have been deleted 1 book!');
return redirect()->route('settings.book');
}
public function update($id, BookRequest $request)
{
$book = Book::findOrFail($id);
$input = $request->all();
$book->update($input);
session()->flash('flash_message', 'You have updated 1 book!');
return redirect()->route('settings.book');
}
public function delete($id)
{
$book = Book::findOrFail($id);
$book->delete();
session()->flash('flash_message', 'You have deleted 1 book!');
return redirect()->route('settings.book');
}
}

View file

@ -0,0 +1,107 @@
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use App\Book;
use App\Person;
use App\Transaction;
use App\Project;
use App\Http\Requests\PeminjamanRequest;
use Illuminate\Http\Request;
class BorrowController extends Controller
{
public function __construct()
{
$this->middleware('auth');
}
public function index()
{
//$books = Book::available()->orderByTitle()->lists('title', 'id');
$persons = Person::active()->orderByName()->pluck('last_name', 'id');
//$categories = Category::lists('category', 'id');
$categories = Project::get();
return view('rdr.borrow.borrow', compact('persons', 'categories'));
}
public function store(PeminjamanRequest $request)
{
$input = $request->all();
$book_id = $input['book_id'];
$person_id = $input['person_id'];
$input['borrowed_at'] = time();
$transaction = Transaction::create($input);
$book = Book::findOrFail($book_id);
$stock = $book['stock'] - 1;
$book->update(['stock' => $stock]);
$person = Person::findOrFail($person_id);
$borrow = $person['borrow'] + 1;
$person->update(['borrow' => $borrow]);
session()->flash('flash_message', 'You have added 1 transaction!');
return redirect()->route('borrow.report');
}
public function report()
{
$dateNow = time();
$transactions = Transaction::with('student', 'book')->notReturnedYet()->get();
foreach ($transactions as $transaction) {
$dateDiff = $dateNow - $transaction['borrowed_at'];
$durasi = floor($dateDiff/(60 * 60 * 24));
// $fines = Fine::first();
// if($durasi > $fines['days'])
// {
// $hariDenda = $durasi - $fines['days'];
// $denda = $hariDenda * $fines['fines'];
// $transaction->update(['fines' => $denda]);
// }
// else
// {
// $denda = 0;
// $transaction->update(['fines' => $denda]);
// }
}
//ambil tanggal
//$date2 = mktime(0,0,0,05,31,2015);
//return $date2;
return view('rdr.borrow.report', compact('transactions', 'durasi'));
}
public function pengembalian($id)
{
$returnedAt = time();
$transaction = Transaction::findOrFail($id);
$transaction->update(['status' => 1, 'returned_at' => $returnedAt]);
$book = Book::findOrFail($transaction['book_id']);
$stock = $book['stock'] + 1;
$book->update(['stock' => $stock]);
$student = Student::findOrFail($transaction['student_id']);
$borrow = $student['borrow'] - 1;
$student->update(['borrow' => $borrow]);
session()->flash('flash_message', 'You have returned 1 book!');
return redirect()->route('borrow.histori');
}
public function perpanjang($id)
{
$transaction = Transaction::findOrFail($id);
$dateNow = time();
$transaction->update(['borrowed_at' => $dateNow, 'fines' => 0]);
session()->flash('flash_message', 'You have added 1 perpanjang!');
return redirect()->route('borrow.report');
}
public function histori()
{
$transactions = Transaction::returned()->get();
return view('rdr.borrow.histori', compact('transactions'));
}
}

View file

@ -1,85 +0,0 @@
<?php namespace App\Http\Controllers;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Category;
use App\Http\Requests\CategoryRequest;
class CategoryController extends Controller {
public function __construct()
{
$this->middleware('auth');
}
public function index()
{
$categories = Category::get();
return view('lms.settings.category.category', compact('categories'));
}
public function add()
{
return view('lms.settings.category.add');
}
public function store(CategoryRequest $request)
{
$input = $request->all();
$category = Category::create($input);
session()->flash('flash_message', 'You have been addded 1 category!');
return redirect()->route('settings.category');
}
public function edit($id)
{
$category = Category::findOrFail($id);
return view('lms.settings.category.edit', compact('category'));
}
public function update($id, CategoryRequest $request)
{
$category = Category::findOrFail($id);
$input = $request->all();
session()->flash('flash_message', 'You have been updated 1 category!');
$category->update($input);
return redirect()->route('settings.category');
}
public function delete($id)
{
$category = Category::findOrFail($id);
$category->delete();
session()->flash('flash_message', 'You have been deleted 1 category!');
return redirect()->route('settings.category');
}
}

View file

@ -0,0 +1,96 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\Collection;
class CollectionController extends Controller
{
public function __construct()
{
//
}
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//$collections = Collection::take(10)->get();
//$collections = Collection::get();
$collections = Collection::with('documents')
->paginate(8); //get();
return view('rdr.settings.collection.collection', compact('collections'));
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function delete($id)
{
//
}
}

View file

@ -1,11 +1,13 @@
<?php namespace App\Http\Controllers;
<?php
namespace App\Http\Controllers;
use Illuminate\Foundation\Bus\DispatchesCommands;
//use Illuminate\Foundation\Bus\DispatchesCommands;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
abstract class Controller extends BaseController {
use DispatchesCommands, ValidatesRequests;
abstract class Controller extends BaseController
{
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
}

View file

@ -1,50 +0,0 @@
<?php namespace App\Http\Controllers;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\Fine;
use App\Http\Requests\FinesRequest;
use Illuminate\Http\Request;
class FinesController extends Controller {
public function __construct()
{
$this->middleware('auth');
}
public function index()
{
$fines = Fine::get();
return view('lms.settings.fine.fine', compact('fines'));
}
public function edit($id)
{
$fine = Fine::findOrFail($id);
return view('lms.settings.fine.edit', compact('fine'));
}
public function update($id, FinesRequest $request)
{
$fines = Fine::findOrFail($id);
$input = $request->all();
$fines->update($input);
session()->flash('flash_message', 'You have been updated fines!');
return redirect()->route('settings.fines');
}
}

View file

@ -0,0 +1,85 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\View\View;
class HomeController extends Controller
{
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
//$this->middleware('auth');
}
/**
* Show the application dashboard.
*
* @return \Illuminate\Http\Response
*/
public function index(): View
{
// $tglSekarang = time();
// $students = Student::get();
// foreach ($students as $student) {
// $dateDiff = $tglSekarang - $student['registered_at'];
// $durasi = floor($dateDiff/(60 * 60 * 24));
// $periode = Periode::first();
// if($durasi > $periode['days']){
// $student->update(['status' => 0]);
// }
// else{
// $student->update(['status' => 1]);
// }
// }
return view('rdr.home.index');
}
/**
* Show the application dashboard.
*
* @return \Illuminate\Http\Response
*/
public function contact(): View
{
return view('rdr.home.contact');
}
/**
* Show the application dashboard.
*
* @return \Illuminate\Http\Response
*/
public function imprint(): View
{
return view('rdr.home.imprint');
}
/**
* Show the application dashboard.
*
* @return \Illuminate\Http\Response
*/
public function about(): View
{
return view('rdr.home.about');
}
/**
* Show the application dashboard.
*
* @return \Illuminate\Http\Response
*/
public function news(): View
{
return view('rdr.home.news');
}
}

View file

@ -0,0 +1,417 @@
<?php
namespace App\Http\Controllers\Oai;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Dataset;
use Illuminate\Support\Facades\Log;
use App\Book;
class RequestController extends Controller
{
/**
* Holds information about which dataset state aka server_state
* are delivered out
*
* @var array
*/
private $_deliveringDocumentStates = array('published', 'deleted'); // maybe deleted documents too
const SET_SPEC_PATTERN = '[A-Za-z0-9\-_\.!~\*\'\(\)]+';
/**
* Holds xml representation of document information to be processed.
*
* @var \DomDocument Defaults to null.
*/
protected $_xml = null;
/**
* Holds the stylesheet for the transformation.
*
* @var \DomDocument Defaults to null.
*/
protected $_xslt = null;
/**
* Holds the xslt processor.
*
* @var \XSLTProcessor Defaults to null.
*/
protected $_proc = null;
/**
* Load an xslt stylesheet.
*
* @return void
*/
private function loadStyleSheet($stylesheet)
{
$this->_xslt = new \DomDocument;
$this->_xslt->load($stylesheet);
$this->_proc->importStyleSheet($this->_xslt);
if (isset($_SERVER['HTTP_HOST'])) {
$this->_proc->setParameter('', 'host', $_SERVER['HTTP_HOST']);
}
//$this->_proc->setParameter('', 'server', $this->getRequest()->getBaseUrl());
}
public function __construct()
{
//$this->middleware('auth');
// Initialize member variables.
$this->_xml = new \DomDocument;
$this->_proc = new \XSLTProcessor;
}
public function index(Request $request)
{
$oaiRequest = $request->all();
$safeRemoveParameters = array('module', 'controller', 'action', 'role');
foreach ($safeRemoveParameters as $parameter) {
unset($oaiRequest[$parameter]);
}
return $this->__handleRequest($oaiRequest);
}
private function __handleRequest(array $oaiRequest)
{
// Setup stylesheet
$this->loadStyleSheet('oai-pmh.xslt');
// Set response time
$this->_proc->setParameter('', 'responseDate', date("Y-m-d\TH:i:s\Z"));
// set OAI base url
$uri = explode('?', $_SERVER['REQUEST_URI'], 2);
$this->_proc->setParameter('', 'baseURL', url('/') . $uri[0]);
if (isset($oaiRequest['verb'])) {
$this->_proc->setParameter('', 'oai_verb', $oaiRequest['verb']);
if ($oaiRequest['verb'] == 'Identify') {
$this->_handleIdentify();
} elseif ($oaiRequest['verb'] == 'ListMetadataFormats') {
$this->_handleListMetadataFormats();
} elseif ($oaiRequest['verb'] == 'ListRecords') {
$this->_handleListRecords($oaiRequest);
} elseif ($oaiRequest['verb'] == 'ListIdentifiers') {
$this->_handleListIdentifiers($oaiRequest);
} elseif ($oaiRequest['verb'] == 'ListSets') {
$this->_handleListSets($oaiRequest);
} else {
$this->_handleIllegalVerb();
}
} else {
$oaiRequest['verb'] = 'Identify';
$this->_proc->setParameter('', 'oai_verb', $oaiRequest['verb']);
$this->doc = $this->_handleIdentify();
}
//$xml = $this->_xml->saveXML();
$xml = $this->_proc->transformToXML($this->_xml);
//$xml = $this->doc->asXML();
return response($xml)//->view('rss', array('rss'=>$this->rss))
->header('Content-Type', 'application/xml')
->header('charset', 'utf-8');
}
/**
* Implements response for OAI-PMH verb 'Identify'.
*
* @return void
*/
private function _handleIdentify()
{
$email = "repository@geologie.ac.at";
$repositoryName = "Data Research Repository";
$repIdentifier = "rdr.gba.ac.at";
//$sampleIdentifier = $this->_configuration->getSampleIdentifier();
$earliestDateFromDb = Dataset::earliestPublicationDate();
// set parameters for oai-pmh.xslt
$this->_proc->setParameter('', 'email', $email);
$this->_proc->setParameter('', 'repositoryName', $repositoryName);
$this->_proc->setParameter('', 'repIdentifier', $repIdentifier);
//$this->_proc->setParameter('', 'sampleIdentifier', $sampleIdentifier);
$this->_proc->setParameter('', 'earliestDatestamp', $earliestDateFromDb);
$this->_xml->appendChild($this->_xml->createElement('Documents'));
}
/**
* Implements response for OAI-PMH verb 'ListMetadataFormats'.
*
* @param array &$oaiRequest Contains full request information
* @return void
*/
private function _handleListMetadataFormats()
{
$this->_xml->appendChild($this->_xml->createElement('Documents'));
}
/**
* Implements response for OAI-PMH verb 'ListRecords'.
*
* @param array &$oaiRequest Contains full request information
* @return void
*/
private function _handleListRecords($oaiRequest)
{
$maxRecords = 20;//$this->_configuration->getMaxListRecords();
$this->_handlingOfLists($oaiRequest, $maxRecords);
}
/**
* Implements response for OAI-PMH verb 'ListIdentifiers'.
*
* @param array &$oaiRequest Contains full request information
* @return void
*/
private function _handleListIdentifiers(array &$oaiRequest)
{
$maxIdentifier = 20;//$this->_configuration->getMaxListIdentifiers();
$this->_handlingOfLists($oaiRequest, $maxIdentifier);
}
/**
* Implements response for OAI-PMH verb 'ListSets'.
*
* @param array &$oaiRequest Contains full request information
* @return void
*/
private function _handleListSets()
{
$repIdentifier = "rdr.gba.ac.at";
$this->_proc->setParameter('', 'repIdentifier', $repIdentifier);
$this->_xml->appendChild($this->_xml->createElement('Documents'));
//$oaiSets = new Oai_Model_Sets();
$sets = array(
'bibliography:true' => 'Set for bibliographic entries',
'bibliography:false' => 'Set for non-bibliographic entries',
);
$sets = array_merge(
$sets,
$this->getSetsForDocumentTypes()
);
//$sets = $this->getSetsForDocumentTypes();
foreach ($sets as $type => $name) {
$opusDoc = $this->_xml->createElement('Rdr_Sets');
$typeAttr = $this->_xml->createAttribute('Type');
$typeValue = $this->_xml->createTextNode($type);
$typeAttr->appendChild($typeValue);
$opusDoc->appendChild($typeAttr);
$nameAttr = $this->_xml->createAttribute('TypeName');
$nameValue = $this->_xml->createTextNode($name);
$nameAttr->appendChild($nameValue);
$opusDoc->appendChild($nameAttr);
$this->_xml->documentElement->appendChild($opusDoc);
}
}
private function _handleIllegalVerb()
{
$this->_proc->setParameter('', 'oai_error_code', 'badVerb');
$this->_proc->setParameter('', 'oai_error_message', 'The verb provided in the request is illegal.');
}
/**
* Helper method for handling lists.
*
* @param array $oaiRequest query parameter
* @param mixed $maxRecords max count of records
*
* @return void
*/
private function _handlingOfLists(array &$oaiRequest, $maxRecords)
{
if (true === empty($maxRecords)) {
$maxRecords = 100;
}
$repIdentifier = "rdr.gba.ac.at";
$this->_proc->setParameter('', 'repIdentifier', $repIdentifier);
$this->_xml->appendChild($this->_xml->createElement('Documents'));
// do some initialisation
$cursor = 0;
//$totalIds = 0;
$start = $maxRecords + 1;
$reldocIds = array();
$metadataPrefix = null;
if (true === array_key_exists('metadataPrefix', $oaiRequest)) {
$metadataPrefix = $oaiRequest['metadataPrefix'];
}
$this->_proc->setParameter('', 'oai_metadataPrefix', $metadataPrefix);
// no resumptionToken is given
$finder = Dataset::query();
// add server state restrictions
$finder->whereIn('server_state', $this->_deliveringDocumentStates);
if (array_key_exists('set', $oaiRequest)) {
$setarray = explode(':', $oaiRequest['set']);
if ($setarray[0] == 'doc-type') {
if (count($setarray) === 2 and !empty($setarray[1])) {
$finder->where('type', $setarray[1]);
}
}
}
$totalIds = $finder->count();
$reldocIds = $finder->pluck('id')->toArray();
// handling of document ids
$restIds = $reldocIds;
$workIds = array_splice($restIds, 0, $maxRecords);
//foreach ($datasets as $dataset)
foreach ($workIds as $dataId) {
$dataset = Dataset::findOrFail($dataId);
$this->createXmlRecord($dataset);
}
}
private function createXmlRecord(Dataset $dataset)
{
//$node = $this->_xml->createElement('Rdr_Dataset');
$domNode = $this->getDatasetXmlDomNode($dataset);
// add frontdoor url
$this->_addLandingPageAttribute($domNode, $dataset->id);
// add access rights to element
//$this->_addAccessRights($domNode, $dataset);
$node = $this->_xml->importNode($domNode, true);
//$node->setAttribute("Id", $dataset->id);
//$node->setAttribute("ServerState", $dataset->server_state);
////$child = new \DOMElement("ServerDateModified");
//$child = $this->_xml->createElement('ServerDateModified');
//$child->setAttribute("Year", $dataset->server_date_modified->format('Y'));
//$child->setAttribute("Month", $dataset->server_date_modified->month);
//$child->setAttribute("Day", $dataset->server_date_modified->day);
//$node->appendChild($child);
//$type = $dataset->type;
$this->_addSpecInformation($node, 'doc-type:' . $dataset->type);
//$this->_addSpecInformation($node, 'bibliography:' . 'false');
$this->_xml->documentElement->appendChild($node);
}
/**
* Add the landingpage attribute to Rdr_Dataset XML output.
*
* @param \DOMNode $document Rdr_Dataset XML serialisation
* @param string $docid Id of the dataset
* @return void
*/
private function _addLandingPageAttribute(\DOMNode $document, $dataid)
{
$url = route('document.show', $dataid);
$owner = $document->ownerDocument;
$attr = $owner->createAttribute('landingpage');
$attr->appendChild($owner->createTextNode($url));
$document->appendChild($attr);
}
private function _addSpecInformation(\DOMNode $document, $information)
{
$setSpecAttribute = $this->_xml->createAttribute('Value');
$setSpecAttributeValue = $this->_xml->createTextNode($information);
$setSpecAttribute->appendChild($setSpecAttributeValue);
$setSpecElement = $this->_xml->createElement('SetSpec');
//$setSpecElement =new \DOMElement("SetSpec");
$setSpecElement->appendChild($setSpecAttribute);
$document->appendChild($setSpecElement);
}
private function getDatasetXmlDomNode($dataset)
{
if (!in_array($dataset->server_state, $this->_deliveringDocumentStates)) {
$message = 'Trying to get a document in server state "' . $dataset->server_state . '"';
//Zend_Registry::get('Zend_Log')->err($message);
Log::error("server state: $message");
throw new \Exception($message);
}
$dataset->fetchValues();
$xmlModel = new \App\Library\Xml\XmlModel();
$xmlModel->setModel($dataset);
$xmlModel->excludeEmptyFields();
$xmlModel->setXmlCache(new \App\XmlCache());
return $xmlModel->getDomDocument()->getElementsByTagName('Rdr_Dataset')->item(0);
}
/**
* Returns oai sets for document types.
* @return array
*/
private function getSetsForDocumentTypes()
{
$setSpecPattern = self::SET_SPEC_PATTERN;
$sets = array();
$finder = new \App\DatasetFinder();
$finder->setServerState('published');
foreach ($finder->groupedTypesPlusCount() as $doctype => $row) {
if (0 == preg_match("/^$setSpecPattern$/", $doctype)) {
$msg = "Invalid SetSpec (doctype='" . $doctype . "')."
. " Allowed characters are [$setSpecPattern].";
Log::error("OAI-PMH: $msg");
continue;
}
$setSpec = 'doc-type:' . $doctype;
// $count = $row['count'];
$sets[$setSpec] = "Set for document type '$doctype'";
}
return $sets;
}
private function handleIdentifyOld()
{
//$earliestDateFromDb = Opus_Document::getEarliestPublicationDate();
//$earliestDateFromDb = Dataset::select('server_date_created')->orderBy('server_date_created', 'desc')->first()->toDateTimeString();
$earliestDateFromDb = Dataset::earliestPublicationDate();
$sxe = new \SimpleXMLElement('<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="xsl/oai2.xslt"?><OAI-PMH/>');
$sxe->addAttribute('xmlns', 'http://www.openarchives.org/OAI/2.0/');
$sxe->addAttribute('xmlns:xsi', 'http://www.w3.org/2001/XMLSchema-instance');
$sxe->addAttribute('xmlns:mml', 'http://www.w3.org/1998/Math/MathML');
$sxe->addAttribute('xsi:schemaLocation', 'http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd');
$sxe->addChild('responseDate', date("Y-m-d\TH:i:s\Z"));
$uri = explode('?', $_SERVER['REQUEST_URI'], 2);
$requestChild = $sxe->addChild('request', url('/') . $uri[0]);
$requestChild->addAttribute('verb', 'Identify');
$identify = $sxe->addChild('Identify');
$identify->addChild('repositoryName', "Data Research Repository");
$identify->addChild('baseURL', "http://rdr.gba.geolba.ac.at/");
$identify->addChild('protocolVersion', '2.0');
$identify->addChild('adminEmail', 'repository@geologie.ac.at');
//$identify->addChild('earliestDatestamp', '2017-04-07');
$identify->addChild('earliestDatestamp', $earliestDateFromDb);
$identify->addChild('deletedRecord', 'persistent');
//$description = $identify->addChild('description');
//$oaiIdentifier = $description->addChild('oai-identifier');
//$oaiIdentifier->addAttribute('xmlns', 'http://www.openarchives.org/OAI/2.0/oai-identifier');
//$oaiIdentifier->addAttribute('xsi:schemaLocation', 'http://www.openarchives.org/OAI/2.0/oai-identifier');
//$oaiIdentifier->addChild('scheme', 'oai');
return $sxe;
}
}

View file

@ -1,57 +1,42 @@
<?php namespace App\Http\Controllers;
<?php
use App\Http\Requests;
use App\Http\Controllers\Controller;
namespace App\Http\Controllers;
use App\Dataset;
use App\Book;
use App\Category;
use App\Shelf;
use App\Periode;
use App\Student;
use Illuminate\Http\Request;
use Illuminate\View\View;
class PagesController extends Controller {
class PagesController extends Controller
{
public function __construct()
{
// $this->middleware('auth');
}
public function __construct()
{
$this->middleware('auth');
}
public function index()
{
$tglSekarang = time();
$students = Student::get();
foreach ($students as $student) {
$dateDiff = $tglSekarang - $student['registered_at'];
$durasi = floor($dateDiff/(60 * 60 * 24));
$periode = Periode::first();
if($durasi > $periode['days']){
$student->update(['status' => 0]);
}
else{
$student->update(['status' => 1]);
}
}
return view('lms.index');
}
public function books()
{
$books = Book::with('category', 'shelf')->orderByTitle()->get();
return view('lms.books', compact('books'));
}
public function documents() : View
{
// $books = Book::with('category', 'shelf')->orderByTitle()->get();
$documents = Dataset::orderByType()->get();
return view('rdr.document.documents', compact('documents'));
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id): View
{
$document = Dataset::findOrFail($id);
$document->load('titles');
$document->load('abstracts');
return view('rdr.document.show', compact('document'));
}
}

View file

@ -1,148 +0,0 @@
<?php namespace App\Http\Controllers;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\Book;
use App\Student;
use App\Transaction;
use App\Fine;
use App\Category;
use App\Http\Requests\PeminjamanRequest;
use Illuminate\Http\Request;
class PeminjamanController extends Controller {
public function __construct()
{
$this->middleware('auth');
}
public function index()
{
//$books = Book::available()->orderByTitle()->lists('title', 'id');
$students = Student::notLimit()->active()->orderByName()->lists('name', 'id');
//$categories = Category::lists('category', 'id');
$categories = Category::get();
return view('lms.peminjaman.peminjaman', compact('students', 'categories'));
}
public function store(PeminjamanRequest $request)
{
$input = $request->all();
$book_id = $input['book_id'];
$student_id = $input['student_id'];
$input['borrowed_at'] = time();
$transaction = Transaction::create($input);
$book = Book::findOrFail($book_id);
$stock = $book['stock'] - 1;
$book->update(['stock' => $stock]);
$student = Student::findOrFail($student_id);
$borrow = $student['borrow'] + 1;
$student->update(['borrow' => $borrow]);
session()->flash('flash_message', 'You have been added 1 transaction!');
return redirect()->route('peminjaman.laporan');
}
public function laporan()
{
$tglSekarang = time();
$transactions = Transaction::with('student', 'book')->notReturnedYet()->get();
foreach ($transactions as $transaction) {
$dateDiff = $tglSekarang - $transaction['borrowed_at'];
$durasi = floor($dateDiff/(60 * 60 * 24));
$fines = Fine::first();
if($durasi > $fines['days']){
$hariDenda = $durasi - $fines['days'];
$denda = $hariDenda * $fines['fines'];
$transaction->update(['fines' => $denda]);
}
else{
$denda = 0;
$transaction->update(['fines' => $denda]);
}
}
//ambil tanggal
//$date2 = mktime(0,0,0,05,31,2015);
//return $date2;
return view('lms.peminjaman.laporan', compact('transactions', 'durasi'));
}
public function pengembalian($id)
{
$returnedAt = time();
$transaction = Transaction::findOrFail($id);
$transaction->update(['status' => 1, 'returned_at' => $returnedAt]);
//ini bisa langsung, cuman kan harus ambil data stock nya dulu mzzz
//$transaction->book()->update(['stock' => 7]);
$book = Book::findOrFail($transaction['book_id']);
$stock = $book['stock'] + 1;
$book->update(['stock' => $stock]);
$student = Student::findOrFail($transaction['student_id']);
$borrow = $student['borrow'] - 1;
$student->update(['borrow' => $borrow]);
session()->flash('flash_message', 'You have been doing 1 returned transaction!');
return redirect()->route('peminjaman.histori');
}
public function perpanjang($id)
{
$transaction = Transaction::findOrFail($id);
$dateNow = time();
$transaction->update(['borrowed_at' => $dateNow, 'fines' => 0]);
session()->flash('flash_message', 'You have been added 1 perpanjang!');
return redirect()->route('peminjaman.laporan');
}
public function histori()
{
$transactions = Transaction::returned()->get();
return view('lms.peminjaman.histori', compact('transactions'));
}
}

View file

@ -1,4 +1,5 @@
<?php namespace App\Http\Controllers;
<?php
namespace App\Http\Controllers;
use App\Http\Requests;
use App\Http\Controllers\Controller;
@ -7,65 +8,51 @@ use App\Student;
use App\Http\Requests\PeriodeRequest;
use Illuminate\Http\Request;
class PeriodeController extends Controller {
class PeriodeController extends Controller
{
public function __construct()
{
$this->middleware('auth');
public function __construct()
{
$this->middleware('auth');
}
}
public function index()
{
$periodes = Periode::get();
return view('lms.settings.periode.periode', compact('periodes'));
}
public function index()
{
$periodes = Periode::get();
public function edit($id)
{
$periode = Periode::findOrFail($id);
return view('lms.settings.periode.edit', compact('periode'));
}
return view('lms.settings.periode.periode', compact('periodes'));
public function update($id, PeriodeRequest $request)
{
$periode = Periode::findOrFail($id);
}
$input = $request->all();
public function edit($id)
{
$periode = Periode::findOrFail($id);
$periode->update($input);
return view('lms.settings.periode.edit', compact('periode'));
//process
$tglSekarang = time();
}
public function update($id, PeriodeRequest $request)
{
$periode = Periode::findOrFail($id);
$input = $request->all();
$periode->update($input);
//process
$tglSekarang = time();
$students = Student::get();
foreach ($students as $student) {
$dateDiff = $tglSekarang - $student['registered_at'];
$durasi = floor($dateDiff/(60 * 60 * 24));
$periodes = Periode::first();
if($durasi > $periodes['days']){
$student->update(['status' => 0]);
}
else{
$student->update(['status' => 1]);
}
}
session()->flash('flash_message', 'You have been updated periode!');
return redirect()->route('settings.periode');
}
$students = Student::get();
foreach ($students as $student) {
$dateDiff = $tglSekarang - $student['registered_at'];
$durasi = floor($dateDiff/(60 * 60 * 24));
$periodes = Periode::first();
if ($durasi > $periodes['days']) {
$student->update(['status' => 0]);
} else {
$student->update(['status' => 1]);
}
}
session()->flash('flash_message', 'You have been updated periode!');
return redirect()->route('settings.periode');
}
}

View file

@ -0,0 +1,219 @@
<?php
//https://www.5balloons.info/multi-page-step-form-in-laravel-with-validation/
namespace App\Http\Controllers\Publish;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Dataset;
use Illuminate\Support\Facades\DB;
class IndexController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function createStep1(Request $request)
{
$dataset = $request->session()->get('dataset');
return view('publish.create-step1', compact('dataset', $dataset));
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function storeStep1(Request $request)
{
$validatedData = $this->validate($request, [
'Type' => 'required|min:4',
'rights' => 'required|boolean|in:1'
]);
// $validatedData = $request->validate([
// 'name' => 'required|unique:products',
// 'amount' => 'required|numeric',
// 'company' => 'required',
// 'available' => 'required',
// 'description' => 'required',
// ]);
if (empty($request->session()->get('dataset'))) {
// $dataset = new Dataset();
//$dataset->fill($validatedData);
// $dataset->type = $request->input('type');
$dataset = $request->except('rights', '_token');
$request->session()->put('dataset', $dataset);
} else {
$dataset = $request->session()->get('dataset');
//$dataset->fill($validatedData);
$dataset['Type'] = $request->input('Type');
$request->session()->put('dataset', $dataset);
}
return redirect()->route('dataset.create2');
}
/**
* Show the step 2 Form for creating a new dataset.
*
* @return \Illuminate\Http\Response
*/
public function createStep2(Request $request)
{
//if no dataset is'nt in session variable return to step1
if (empty($request->session()->get('dataset'))) {
return redirect()->route('dataset.create1');
}
$dataset = $request->session()->get('dataset');
//fill select variable
$languages = DB::table('languages')
->where('active', true)
->pluck('part2_t', 'part2_t');
return view('publish.create-step2', compact('dataset', 'languages'));
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function storeStep2(Request $request)
{
$validatedData = $this->validate($request, [
'Type' => 'required|min:4',
'BelongsToBibliography' => 'required|boolean',
"TitleMain.Value" => 'required|min:5|max:255',
"TitleMain.Language" => 'required|min:3',
"TitleAbstract.Value" => 'required|min:5|max:255',
"TitleAbstract.Language" => 'required|min:3'
]);
$optionalData = $request->all();
// $dataset = $request->except('rights', '_token', 'input_img');
$dataset = $request->session()->get('dataset');
//update dataset with validated data
$dataset['Type'] = $validatedData['Type'];
$dataset['BelongsToBibliography'] = $validatedData['BelongsToBibliography'];
$dataset['TitleMain']['Value'] = $validatedData['TitleMain']['Value'];
$dataset['TitleMain']['Language'] = $validatedData['TitleMain']['Language'];
$dataset['TitleAbstract']['Value'] = $validatedData['TitleAbstract']['Value'];
$dataset['TitleAbstract']['Language'] = $validatedData['TitleAbstract']['Language'];
if (isset($optionalData['CreatingCorporation'])) {
$dataset['CreatingCorporation'] = $optionalData['CreatingCorporation'];
}
if (isset($optionalData['EmbargoDate'])) {
$dataset['EmbargoDate'] = $optionalData['EmbargoDate'];
}
if (!isset($dataset['DatasetFile'])) {
$this->validate($request, [
'dataset_file' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048'
]);
//update session variable
// $dataset = $request->session()->get('dataset');
$image = $request->file('dataset_file');
$fileName = "productImage-" . time() . '.' . $image->getClientOriginalExtension();
$path = $image->storeAs(
'files',
$fileName
);
// $path = Storage::putFile('files', $image, $fileName);
//$dataset = $request->session()->get('dataset');
$dataset['DatasetFile'] = $fileName;
}
$request->session()->put('dataset', $dataset);
return redirect()->route('dataset.create3');
}
/**
* Show the Product Review page
*
* @return \Illuminate\Http\Response
*/
public function createStep3(Request $request)
{
//if no dataset is'nt in session variable return to step1
if (empty($request->session()->get('dataset'))) {
return redirect()->route('dataset.create1');
}
$dataset = $request->session()->get('dataset');
return view('publish.create-step3', compact('dataset'));
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$dataset = $request->session()->get('dataset');
// $product->save();
// return redirect('/dataset');
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
}

View file

@ -0,0 +1,162 @@
<?php
namespace App\Http\Controllers;
use App\Book;
use App\Dataset;
use Illuminate\Http\Request;
use Illuminate\View\View;
use App\Library\Search\Navigation;
use App\Library\Util\SolrSearchSearcher;
use Illuminate\Support\Facades\Log;
class SearchController extends Controller
{
private $_query;
private $_numOfHits;
private $_searchtype;
private $_resultList;
private $_facetMenu;
protected $client;
/**
* Initialize controller.
*/
public function __construct(\Solarium\Client $client)
{
$this->client = $client;
// $config = config('solarium');
// $config = array(
// 'endpoint' => array(
// 'localhost' => array(
// 'host' => '127.0.0.1',
// 'port' => '8983',
// 'path' => '/solr/#',
// 'core' => 'opus4'
// )
// )
// );
// $this->client = new \Solarium\Client($config);
}
public function ping()
{
// create a ping query
$ping = $this->client->createPing();
// execute the ping query
try {
$this->client->ping($ping);
return response()->json('OK');
} catch (\Solarium\Exception\HttpException $e) {
return response()->json('ERROR', 500);
}
}
public function search1(Request $request) : View
{
$this->_request = $request;
$data=$request->all();
//$this->_searchtype = $request->input('searchtype');
$this->_searchtype = $request->input('searchtype');
return view('rdr.solrsearch.index');
}
public function search(Request $request) : View
{
Log::info('Received new search request. Redirecting to search action of IndexController.');
$this->_request = $request;
//$filter =$request->input('query');
// $query = $this->client->createSelect();
// $query->setQuery('%P1%', array($filter));
// // $query->setQuery('*:*');
// $results = $this->client->select($query);
// // // display the total number of documents found by solr
// echo 'NumFound: ' .$results->getNumFound();
//$this->_query = Navigation::getQueryUrl($request);
$query = $this->buildQuery();
if (!is_null($query)) {
$this->_query = $query;
$this->performSearch();
// set start and rows param (comparable to SQL limit) using fluent interface
//$query->setStart(2)->setRows(20);
// set fields to fetch (this overrides the default setting 'all fields')
//$query->setFields(array('id','year'));
$results = $this->_resultList->getResults();
$numOfHits = $this->_numOfHits;
return view('rdr.solrsearch.index', compact('results', 'numOfHits'));
}
return view('rdr.solrsearch.index');
}
/**
* Displays simple search form.
*/
public function index() : View
{
$totalNumOfDocs = Dataset::count();
return view('rdr.solrsearch.index', compact('totalNumOfDocs'));
}
public function searchDb(Request $request) : View
{
$searchType = "simple";
$params = $request->all();
//build query
$this->_searchtype = $request->input('searchtype');
// Gets the query string from our form submission
//$query = Request::input('search');
$filter = $request->input('search');
//$query = Input::get('search', '');
// Returns an array of articles that have the query string located somewhere within
// our articles titles. Paginates them so we can break up lots of search results.
$books = Book::where('title', 'LIKE', '%' . $filter . '%')
->get();//paginate(10);
// returns a view and passes the view the list of articles and the original query.
return view('rdr.solrsearch.index', compact('books'));
}
#region private helper
private function buildQuery()
{
$request = $this->_request;
$this->_searchtype = $request->input('searchtype');
return Navigation::getQueryUrl($request);
}
/**
* TODO this should happen in model class so it can be tested directly
*/
private function performSearch()
{
//$this->getLogger()->debug('performing search');
try {
$searcher = new SolrSearchSearcher();
// $openFacets = $this->_facetMenu->buildFacetArray( $this->getRequest()->getParams() );
// $searcher->setFacetArray($openFacets);
$this->_resultList = $searcher->search($this->_query);
// $this->view->openFacets = $openFacets;
} catch (Exception $e) {
// $this->getLogger()->err(__METHOD__ . ' : ' . $e);
//throw new Application_SearchException($e);
echo 'Exception abgefangen: ', $e->getMessage(), "\n";
}
$this->_numOfHits = $this->_resultList->getNumberOfHits();
}
#endregion private helper
}

View file

@ -0,0 +1,96 @@
<?php
namespace App\Http\Controllers\Settings;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Project;
use App\Http\Requests\ProjectRequest;
use Illuminate\View\View;
use Illuminate\Http\RedirectResponse;
class CategoryController extends Controller
{
public function __construct()
{
$this->middleware('auth');
}
public function index() : View
{
$projects = Project::get();
return view('settings.project.category', compact('projects'));
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function add() : View
{
return view('settings.project.add');
}
public function store(ProjectRequest $request) : RedirectResponse
{
$input = $request->all();
Project::create($input);
session()->flash('flash_message', 'You have added 1 project!');
return redirect()->route('settings.project');
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id) : View
{
$project = Project::findOrFail($id);
return view('settings.project.edit', compact('project'));
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update($id, ProjectRequest $request) : RedirectResponse
{
$project = Project::findOrFail($id);
$input = $request->all();
$project->update($input);
session()->flash('flash_message', 'You have updated 1 project!');
return redirect()->route('settings.project');
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function delete($id) : RedirectResponse
{
$project = Project::with('documents')->findOrFail($id);
if ($project->documents->count() > 0) {
session()->flash(
'flash_message',
'You cannot delete this project!'
. ' There are '
. $project->documents->count()
. ' documents in this project!'
);
return redirect()->route('settings.project');
} else {
$project->delete();
session()->flash('flash_message', 'You have deleted 1 project!');
return redirect()->route('settings.project');
}
}
}

View file

@ -0,0 +1,200 @@
<?php
namespace App\Http\Controllers\Settings;
use App\Http\Controllers\Controller;
use App\Dataset;
use App\Project;
use App\License;
use App\Title;
use App\Http\Requests\DocumentRequest;
use Illuminate\View\View;
use Illuminate\Http\RedirectResponse;
use Illuminate\Support\Facades\DB;
use Illuminate\Http\Request;
class DatasetController extends Controller
{
public function __construct()
{
$this->middleware('auth');
}
public function index(Request $request) : View
{
$searchType = $request->input('searchtype');
$builder = Dataset::query();
//$registers = array();
$filter = $request->input('search');
$state = (strlen($request->input('state')) > 0) ? $request->input('state') : "published";
$data = $request->all();
if ($searchType == "simple") {
if (strlen($filter) > 0) {
//$builder->where('field1', '=', $criteria1);
$builder->whereHas('titles', function ($query) use ($filter) {
$query->where('value', 'LIKE', '%' . $filter . '%');
});
// ::with(['titles' => function ($query) use($filter) {
// $query->where('value', 'LIKE', '%' . $filter . '%');
// }])
}
}
$builder->where('server_state', $state);
//$perPage = $request->get('perPage', 20);
$documents = $builder
->paginate(8);
return view('settings.document.document', compact('documents'));
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id): View
{
$document = Dataset::findOrFail($id);
$document->load('titles');
$document->load('abstracts');
return view('settings.document.show', compact('document'));
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
// $categories = Category::lists('category', 'id');
// $shelves = Shelf::lists('shelf', 'id');
// $tanggal = date('Y-m-d');
// $ambilTahun = substr($tanggal, 0, 4);
// for($tahun = 1990; $tahun <= $ambilTahun; $tahun++){
// $years[] = $tahun;
// }
// return view('lms.settings.book.add', compact('categories', 'shelves', 'years'));
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(DocumentRequest $request)
{
// $input = $request->all();
// $book = Book::create($input);
// session()->flash('flash_message', 'You have been addded 1 dataset!');
// return redirect()->route('settings.book');
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id) : View
{
$document = Dataset::findOrFail($id);
$document->load('licenses', 'titles', 'abstracts');
$projects = Project::pluck('label', 'id');
$datum = date('Y-m-d');
$nowYear = substr($datum, 0, 4);
$years = array();
for ($jahr = 1990; $jahr <= $nowYear; $jahr++) {
$years[$jahr] = $jahr;
}
$languages = DB::table('languages')
->where('active', true)
->pluck('part2_t', 'part2_t');
//$options = License::all();
$options = License::all('id', 'name_long');
$checkeds = $document->licenses->pluck('id')->toArray();
//$shelves = Shelf::pluck('shelf', 'id');
// $datum = date('Y-m-d');
// $nowYear = substr($datum, 0, 4);
// $years = array();
// for($jahr = 1990; $jahr <= $nowYear; $jahr++){
// $years[$jahr] = $jahr;
// }
return view('settings.document.edit', compact('document', 'projects', 'options', 'checkeds', 'years', 'languages'));
}
//https://stackoverflow.com/questions/17480200/using-laravel-how-do-i-create-a-view-that-will-update-a-one-to-many-relationshi?rq=1
// https://laravel.io/forum/06-11-2014-how-to-save-eloquent-model-with-relations-in-one-go
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(DocumentRequest $request, $id) : RedirectResponse
{
$document = Dataset::findOrFail($id);
//$input = $request->all();
$input = $request->except('licenses', 'titles');
$document->update($input);
// $document->type = $input['type'];
// $document->thesis_year_accepted = $input['thesis_year_accepted'];
// $document->project_id = $input['project_id'];
// $document->save();
$licenses = $request->input('licenses');
//$licenses = $input['licenses'];
$document->licenses()->sync($licenses);
//save the titles:
$titles = $request->input('titles');
if (is_array($titles) && count($titles) > 0) {
foreach ($titles as $key => $formTitle) {
$title = Title::findOrFail($key);
$title->value = $formTitle['value'];
$title->language = $formTitle['language'];
$title->save();
}
}
//save the abstracts:
$abstracts = $request->input('abstracts');
if (is_array($abstracts) && count($abstracts) > 0) {
foreach ($abstracts as $key => $formAbstract) {
$abstract = Title::findOrFail($key);
$abstract->value = $formAbstract['value'];
$abstract->language = $formAbstract['language'];
$abstract->save();
}
}
session()->flash('flash_message', 'You have updated 1 dataset!');
return redirect()->route('settings.document');
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id) : RedirectResponse
{
// $document = Document::findOrFail($id);
// $document->delete();
// session()->flash('flash_message', 'You have been deleted 1 dataset!');
return redirect()->route('settings.document');
}
}

View file

@ -0,0 +1,47 @@
<?php
namespace App\Http\Controllers\Settings;
use App\Http\Controllers\Controller;
use App\License;
use App\Language;
use App\Http\Requests\LicenseRequest;
use Illuminate\Http\Request;
use Illuminate\View\View;
use Illuminate\Http\RedirectResponse;
use Illuminate\Support\Facades\DB;
class LicenseController extends Controller
{
public function __construct()
{
$this->middleware('auth');
$test = "test";
}
public function index() : View
{
$licenses = License::get();
return view('settings.license.license', compact('licenses'));
}
public function edit($id): View
{
$license = License::findOrFail($id);
//$languages = Language::where('active', true)->pluck('part2_t');
$languages = DB::table('languages')
->where('active', true)
->pluck('part2_t', 'part2_t');
return view('settings.license.edit', compact('license', 'languages'));
}
public function update($id, LicenseRequest $request): RedirectResponse
{
$license = License::findOrFail($id);
$input = $request->all();
$license->update($input);
session()->flash('flash_message', 'You have updated the license!');
return redirect()->route('settings.license');
}
}

View file

@ -0,0 +1,133 @@
<?php
namespace App\Http\Controllers\Settings;
use App\Http\Controllers\Controller;
use App\Person;
use App\Http\Requests\PersonRequest;
use Illuminate\Http\Request;
use Illuminate\View\View;
use Illuminate\Http\RedirectResponse;
class PersonController extends Controller
{
public function __construct()
{
$this->middleware('auth');
//$this->middleware('role:reviewer');
}
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index(): View
{
//$persons = Person::get();
$persons = Person::with('documents')->get();
return view('settings.person.person', compact('persons'));
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function add(): View
{
return view('settings.person.add');
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(PersonRequest $request)
{
$input = $request->all();
$input['registered_at'] = time();
Person::create($input);
session()->flash('flash_message', 'You have added 1 person!');
return redirect()->route('settings.person');
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
$person = Person::with('documents')->findOrFail($id);
return view('settings.person.edit', compact('person'));
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update($id, PersonRequest $request)
{
$person = Person::findOrFail($id);
$input = $request->all();
$person->update($input);
session()->flash('flash_message', 'You have updated 1 person!');
return redirect()->route('settings.person');
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function delete($id)
{
$person = Person::with('documents')->findOrFail($id);
if ($person->documents->count() > 0) {
// $person->documents()->detach();
// $person->delete();
session()->flash('flash_message', 'You cannot delete this person!');
} else {
$person->delete();
session()->flash('flash_message', 'You have deleted 1 person!');
}
return redirect()->route('settings.person');
}
/**
* deactivate author, submitter etc....
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function down($id): RedirectResponse
{
$person = Person::findOrFail($id);
$person->update(['status' => 0, 'registered_at' => 00000000]);
session()->flash('flash_message', 'person has been deactivated!');
return redirect()->route('settings.person');
}
/**
* activatew author, submitter etc....
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function up($id): RedirectResponse
{
$dateNow = time();
$person = Person::findOrFail($id);
$person->update(['status' => 1, 'registered_at' => $dateNow]);
session()->flash('flash_message', 'person has been activated!');
return redirect()->route('settings.person');
}
}

View file

@ -0,0 +1,108 @@
<?php
namespace App\Http\Controllers\Settings;
use App\Role;
use App\Permission;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class RoleController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$roles = Role::all();
return view('settings.role.role', compact('roles'));
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
$permissions = Permission::all('id', 'name');
return view('settings.role.create', compact('permissions'));
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*
* @param \App\Role $role
* @return \Illuminate\Http\Response
*/
public function show(Role $role)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Role $role
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
$role = Role::find($id);
$permissions = Permission::all('id', 'name');
//$userRoles = $user->roles->pluck('name','name')->all();
$checkeds = $role->permissions->pluck('id')->toArray();
return view('settings.role.edit', compact('role', 'permissions', 'checkeds'));
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Role $role
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
$this->validate(request(), [
'name' => 'required'
]);
$role = Role::findOrFail($id);
$role->update($request->except('permissions'));
$permissions = $request->input('permissions') ? $request->input('permissions') : [];
//$role->syncPermissions($permissions);
if (isset($permissions)) {
$role->permissions()->sync($permissions);//If one or more role is selected associate user to roles
} else {
$role->permissions()->detach(); //If no role is selected remove exisiting role associated to a user
}
return redirect()->route('role.index')
->with('flash_message', 'Role successfully edited.');
}
/**
* Remove the specified resource from storage.
*
* @param \App\Role $role
* @return \Illuminate\Http\Response
*/
public function destroy(Role $role)
{
//
}
}

View file

@ -0,0 +1,169 @@
<?php
namespace App\Http\Controllers\Settings;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\User;
//use Spatie\Permission\Models\Role;
use App\Role;
use Illuminate\Support\Facades\Gate;
class UserController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index(Request $request)
{
//if (! Gate::allows('settings'))
//{
// return abort(401, 'Unauthorized action.');
//}
$users = User::orderBy('id', 'DESC')->paginate(5);
return view('settings.user.user', compact('users'))
->with('i', ($request->input('page', 1) - 1) * 5);
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//$roles = Role::pluck('name','name')->all();
$roles = Role::all('id', 'name');
return view('settings.user.create', compact('roles'));
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$this->validate($request, [
'login' => 'required',
'email' => 'required|email|unique:accounts',
'password' => 'required|min:6|confirmed'
//'roles' => 'required'
]);
//$input = $request->all();
$input = $request->only(['login', 'email', 'password']); //Retreive the name, email and password fields
$input['password'] = bcrypt($input['password']);
$user = User::create($input);
$roles = $request['roles']; //Retrieving the roles field
//Checking if a role was selected
if (isset($roles)) {
foreach ($roles as $role) {
$role_r = Role::where('id', '=', $role)->firstOrFail();
$user->assignRole($role_r); //Assigning role to user
}
}
return redirect()
->route('user.index')
->with('success', 'User has been created successfully');
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
$user = User::find($id);
return view('settings.user.show', compact('user'));
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
$user = User::find($id);
$roles = Role::all('id', 'name');
//$userRoles = $user->roles->pluck('name','name')->all();
$checkeds = $user->roles->pluck('id')->toArray();
return view('settings.user.edit', compact('user', 'roles', 'checkeds'));
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
$this->validate(request(), [
'login' => 'required',
'email' => 'required|email|unique:accounts,email,' . $id,
'password' => 'required|min:6|confirmed'
]);
$user = User::findOrFail($id);
// $input = $request->except('roles');
// $user->fill($input)->save();
$input = $request->only(['login', 'email', 'password']); //Retreive the name, email and password fields
//$input = $request->all();
$user->login = $input['login'];
$user->email = $input['email'];
$user->password = bcrypt($input['password']);
$user->save();
$roles = $request['roles']; //Retreive all roles
if (isset($roles)) {
$user->roles()->sync($roles);//If one or more role is selected associate user to roles
} else {
$user->roles()->detach(); //If no role is selected remove exisiting role associated to a user
}
//return back()->with('flash_message', 'user successfully updated.');
return redirect()
->route('user.index')
->with('flash_message', 'User successfully edited.');
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//Find a user with a given id and delete
$user = User::findOrFail($id);
$user->delete();
return redirect()
->route('user.index')
->with('flash_message', 'User successfully deleted.');
}
}

View file

@ -1,4 +1,5 @@
<?php namespace App\Http\Controllers;
<?php
namespace App\Http\Controllers;
use App\Http\Requests;
use App\Http\Controllers\Controller;
@ -6,78 +7,64 @@ use App\Shelf;
use App\Http\Requests\ShelfRequest;
use Illuminate\Http\Request;
class ShelfController extends Controller {
class ShelfController extends Controller
{
public function __construct()
{
public function __construct()
{
$this->middleware('auth');
}
$this->middleware('auth');
public function index()
{
$shelves = Shelf::get();
return view('lms.settings.shelf.shelf', compact('shelves'));
}
}
public function add()
{
return view('lms.settings.shelf.add');
}
public function index()
{
$shelves = Shelf::get();
public function store(ShelfRequest $request)
{
$input = $request->all();
return view('lms.settings.shelf.shelf', compact('shelves'));
}
$shelf = Shelf::create($input);
public function add()
{
return view('lms.settings.shelf.add');
//flash messaging
session()->flash('flash_message', 'You have been added 1 shelf!');
}
return redirect()->route('settings.shelf');
}
public function store(ShelfRequest $request)
{
$input = $request->all();
public function edit($id)
{
$shelf = Shelf::findOrFail($id);
return view('lms.settings.shelf.edit', compact('shelf'));
}
$shelf = Shelf::create($input);
public function update($id, ShelfRequest $request)
{
$shelf = Shelf::findOrFail($id);
//flash messaging
session()->flash('flash_message', 'You have been added 1 shelf!');
$input = $request->all();
return redirect()->route('settings.shelf');
$shelf->update($input);
}
session()->flash('flash_message', 'You have been updated 1 shelf!');
public function edit($id)
{
$shelf = Shelf::findOrFail($id);
return redirect()->route('settings.shelf');
}
return view('lms.settings.shelf.edit', compact('shelf'));
public function delete($id)
{
$shelf = Shelf::findOrFail($id);
}
$shelf->delete();
public function update($id, ShelfRequest $request)
{
$shelf = Shelf::findOrFail($id);
$input = $request->all();
$shelf->update($input);
session()->flash('flash_message', 'You have been updated 1 shelf!');
return redirect()->route('settings.shelf');
}
public function delete($id)
{
$shelf = Shelf::findOrFail($id);
$shelf->delete();
session()->flash('flash_message', 'You have been deleted 1 shelf!');
return redirect()->route('settings.shelf');
}
session()->flash('flash_message', 'You have been deleted 1 shelf!');
return redirect()->route('settings.shelf');
}
}

View file

@ -0,0 +1,61 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
use App\Dataset;
use Illuminate\Http\Request;
class SitelinkController extends Controller
{
public function index()
{
//get server state published
$serverState = 'published';
$select = DB::table('documents')
->where('server_state', 'LIKE', "%".$serverState."%");
$select
->select(DB::raw('YEAR(published_date) as published_date'))
->distinct(true);
$this->years = $select->pluck('published_date');
$this->ids = array();
return view('rdr.sitelink.index')->with(['years'=> $this->years,'documents'=> $this->ids]);
}
public function list($year)
{
$this->index();
if (preg_match('/^\d{4}$/', $year) > 0) {
$serverState = 'published';
//$select = DB::table('documents')
//->where('server_state','LIKE', "%".$serverState."%");
$select = Dataset::with('titles', 'authors')
->where('server_state', 'LIKE', "%".$serverState."%");
$from = (int)$year;
$until = $year + 1;
$select
->whereYear('server_date_published', '>=', $from)
->whereYear('server_date_published', '<', $until);
$documents = $select
->get();
//$this->years = Dataset::select(DB::raw('YEAR(server_date_modified) as server_date_modified'))
//->distinct(true)
//->pluck('server_date_modified');
//->filter(function ($item) use ($year){
// return $item->year !== $year;
//});
//$select->select('id');
//$this->ids = $select->pluck('id');
//return view('rdr.sitelink.index')->with(['years'=> $this->years,'ids'=> $this->ids]);
return view('rdr.sitelink.index')->with(['years'=> $this->years,'documents'=> $documents]);
}
}
}

View file

@ -0,0 +1,25 @@
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class StaticPageController extends Controller
{
public function __construct()
{
$this->middleware('auth');
}
public function imprint()
{
////$books = Book::available()->orderByTitle()->lists('title', 'id');
//$persons = Person::active()->orderByName()->pluck('last_name', 'id');
////$categories = Category::lists('category', 'id');
//$categories = Project::get();
//return view('rdr.borrow.borrow', compact('persons', 'categories'));
}
}

View file

@ -1,114 +0,0 @@
<?php namespace App\Http\Controllers;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\Student;
use App\Http\Requests\StudentRequest;
use Illuminate\Http\Request;
class StudentController extends Controller {
public function __construct()
{
$this->middleware('auth');
}
public function index()
{
$students = Student::get();
return view('lms.settings.student.student', compact('students'));
}
public function add()
{
return view('lms.settings.student.add');
}
public function store(StudentRequest $request)
{
$input = $request->all();
$input['registered_at'] = time();
$student = Student::create($input);
return redirect()->route('settings.student');
session()->flash('flash_message', 'You have been added 1 student!');
}
public function edit($id)
{
$student = Student::findOrFail($id);
return view('lms.settings.student.edit', compact('student'));
}
public function update($id, StudentRequest $request)
{
$student = Student::findOrFail($id);
$input = $request->all();
$student->update($input);
session()->flash('flash_message', 'You have been updated 1 student!');
return redirect()->route('settings.student');
}
public function delete($id)
{
$student = Student::findOrFail($id);
$student->delete();
session()->flash('flash_message', 'You have been deleted 1 student!');
return redirect()->route('settings.student');
}
public function down($id)
{
$student = Student::findOrFail($id);
$student->update(['status' => 0, 'registered_at' => 12960000]);
session()->flash('flash_message', 'Anda telah mematikan masa aktif 1 siswa!');
return redirect()->route('settings.student');
}
public function up($id)
{
$dateNow = time();
$student = Student::findOrFail($id);
$student->update(['status' => 1, 'registered_at' => $dateNow]);
session()->flash('flash_message', 'Anda telah melakukan perpanjangan masa aktif siswa!');
return redirect()->route('settings.student');
}
}