Other various changes
This commit is contained in:
@ -12,9 +12,11 @@ use App\Entity\Bible;
|
||||
use App\Entity\Speaker;
|
||||
use App\Entity\Series;
|
||||
use App\Entity\Note;
|
||||
use App\Entity\NoteShares;
|
||||
use App\Entity\SharedNote;
|
||||
use App\Utils\Utils;
|
||||
use Doctrine\DBAL\Exception\ReadOnlyException;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Exception;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
@ -54,7 +56,7 @@ class AjaxController extends AbstractController
|
||||
|
||||
$user = $this->getUser();
|
||||
|
||||
if($template_id) {
|
||||
if ($template_id) {
|
||||
$template = $emi->getRepository(Template::class)->find($template_id);
|
||||
$template->setName($template_name);
|
||||
$template->setContent($template_value);
|
||||
@ -166,8 +168,12 @@ class AjaxController extends AbstractController
|
||||
|
||||
$ref = new Reference();
|
||||
$ref->setType($data->type);
|
||||
if(is_numeric($data->book)) {
|
||||
if (is_numeric($data->book)) {
|
||||
$ref->setNdx($data->book);
|
||||
} elseif ($data->type == 'ld' || $data->type == 'hc') {
|
||||
$type = substr($data->book, 0, 2);
|
||||
$ref->setType($type);
|
||||
$ref->setLabel($data->book);
|
||||
}
|
||||
|
||||
ReferenceController::$emi = $emi;
|
||||
@ -191,13 +197,27 @@ class AjaxController extends AbstractController
|
||||
'note' => ReferenceController::retrieveNote($user)
|
||||
};
|
||||
|
||||
if (!is_a($ret, Reference::class)) {
|
||||
$ret = new Reference();
|
||||
$ref = new Reference();
|
||||
|
||||
if (is_a($ret, Reference::class)) {
|
||||
$ref = $ret;
|
||||
}
|
||||
|
||||
if ($data->type == 'hc' && is_array($ret)) {
|
||||
$ref->setLabel(
|
||||
substr($ret[0]->getLabel(), 0, strpos($ret[0]->getLabel(), '-'))
|
||||
);
|
||||
|
||||
$content = null;
|
||||
foreach ($ret as $row) {
|
||||
$content .= $row->getContent().PHP_EOL.PHP_EOL;
|
||||
}
|
||||
$ref->setContent($content);
|
||||
}
|
||||
|
||||
$res->setContent(json_encode([
|
||||
'text' => $ret->getContent(),
|
||||
'title' => "{$ret->getLabel()}",
|
||||
'text' => $ref->getContent(),
|
||||
'title' => $ref->getLabel(),
|
||||
]));
|
||||
|
||||
return $res;
|
||||
@ -223,28 +243,12 @@ class AjaxController extends AbstractController
|
||||
{
|
||||
$res = new Response();
|
||||
$data = json_decode($req->getContent());
|
||||
$path = match($data->type) {
|
||||
'creed' => 'Creeds',
|
||||
'bc' => 'Belgic',
|
||||
'hc' => 'Heidelberg',
|
||||
'cd' => 'Dort',
|
||||
'wcf' => 'Westminster/Confessions',
|
||||
'wsc' => 'Westminster/Shorter Catechism',
|
||||
'wlc' => 'Westminster/Larger Catechism',
|
||||
'lbc' => 'London',
|
||||
'39a' => '39 Articles',
|
||||
'1hc' => '1 Helvetic Catechism',
|
||||
'2hc' => '2 Helvetic Catechism',
|
||||
'sd' => 'Savor Declaration',
|
||||
'agc' => 'Augsburg Confession'
|
||||
};
|
||||
$ref = $emi->getRepository(Reference::class)->find($data->refId);
|
||||
|
||||
$ret = file_put_contents(dirname(dirname(__DIR__))."/references/{$path}/{$data->file}", $data->text);
|
||||
|
||||
if($ret !== false) {
|
||||
$res->setContent(json_encode(['msg' => 'File Saved']));
|
||||
} else {
|
||||
$res->setContent(json_encode(['msg' => 'Failed to save file']));
|
||||
if ($ref) {
|
||||
$ref->setContent($data->text);
|
||||
$emi->persist($ref);
|
||||
$res = $this->json(['msg' => 'Reference updated.']);
|
||||
}
|
||||
|
||||
return $res;
|
||||
@ -371,10 +375,10 @@ class AjaxController extends AbstractController
|
||||
}
|
||||
|
||||
if (is_array($shared) && count($shared) > 0) {
|
||||
$ns = new NoteShares();
|
||||
$ns = new SharedNote();
|
||||
$ns->setNote($note)
|
||||
->setOwner($user)
|
||||
->setShare($shared[0]);
|
||||
->setOwnerId($user->getId())
|
||||
->setSharedUserId($shared[0]->getId());
|
||||
$emi->persist($ns);
|
||||
$emi->flush();
|
||||
|
||||
@ -434,7 +438,7 @@ class AjaxController extends AbstractController
|
||||
|
||||
if (is_array($ret)) {
|
||||
$text = null;
|
||||
foreach($ret as $b) {
|
||||
foreach ($ret as $b) {
|
||||
$text .= "{$b->getVerse()}. {$b->getContent()}".PHP_EOL;
|
||||
}
|
||||
$bible->setContent($text);
|
||||
@ -477,16 +481,20 @@ class AjaxController extends AbstractController
|
||||
$data->trackSaveSize = false;
|
||||
}
|
||||
|
||||
$meta = $user->getMetaData();
|
||||
$meta['saveInterval'] = $data->saveInterval;
|
||||
$meta['saveReferences'] = $data->saveReferences;
|
||||
$meta['noteTextSize'] = $data->noteTextSize;
|
||||
$meta['trackSaveSize'] = $data->trackSaveSize;
|
||||
$meta['saveTimeout'] = $data->saveTimeout;
|
||||
$meta['save-failure-count'] = $data->saveFailureCount;
|
||||
$user->setMetaData($meta);
|
||||
$emi->persist($user);
|
||||
$emi->flush();
|
||||
try {
|
||||
$meta = $user->getMetaData();
|
||||
$meta['saveInterval'] = $data->saveInterval;
|
||||
$meta['saveReferences'] = $data->saveReferences;
|
||||
$meta['noteTextSize'] = $data->noteTextSize;
|
||||
$meta['trackSaveSize'] = $data->trackSaveSize;
|
||||
$meta['saveTimeout'] = $data->saveTimeout;
|
||||
$meta['save-failure-count'] = $data->saveFailureCount;
|
||||
$user->setMetaData($meta);
|
||||
$emi->persist($user);
|
||||
$emi->flush();
|
||||
} catch (ReadOnlyException $e) {
|
||||
return new Response('Read Only '.$_ENV['DATABASE_URL'], 403);
|
||||
}
|
||||
|
||||
$res = new Response();
|
||||
$res->setContent(json_encode([
|
||||
|
@ -4,6 +4,7 @@ namespace App\Controller;
|
||||
|
||||
use App\Entity\Note;
|
||||
use App\Entity\User;
|
||||
use App\Entity\SharedNote;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
@ -17,9 +18,9 @@ class DefaultController extends AbstractController
|
||||
public function index(): Response
|
||||
{
|
||||
if ($this->isGranted('IS_AUTHENTICATED_FULLY')) {
|
||||
return $this->redirect('/index.php/home');
|
||||
return $this->redirect('/home');
|
||||
}
|
||||
return $this->render('default/index.html.twig');
|
||||
return $this->render('default/index.html.twig', ['onLoad' => null]);
|
||||
}
|
||||
|
||||
#[Route('/home', name: 'app_home')]
|
||||
@ -31,6 +32,7 @@ class DefaultController extends AbstractController
|
||||
$meta = $user->getMetaData();
|
||||
|
||||
return $this->render('default/home.html.twig', [
|
||||
'onLoad' => 'setHeight()',
|
||||
'last4Notes' => $last4Notes,
|
||||
'reverseNoteSort' => $openNotes,
|
||||
'isAdmin' => $this->isGranted('ROLE_ADMIN'),
|
||||
@ -45,7 +47,7 @@ class DefaultController extends AbstractController
|
||||
}
|
||||
|
||||
#[Route('/profile', name: 'app_profile')]
|
||||
public function profile(): Response
|
||||
public function profile(EntityManagerInterface $emi): Response
|
||||
{
|
||||
/** @var User $user */
|
||||
$user = $this->getUser();
|
||||
@ -55,6 +57,7 @@ class DefaultController extends AbstractController
|
||||
$meta = $user->getMetaData();
|
||||
if (!$meta) {
|
||||
$meta = [
|
||||
'onLoad' => null,
|
||||
'saveInterval' => 15,
|
||||
'saveReferences' => 'checked',
|
||||
'noteTextSize' => 12,
|
||||
@ -67,8 +70,16 @@ class DefaultController extends AbstractController
|
||||
$meta['trackSaveSize'] = $meta['trackSaveSize'] ? 'checked' : null;
|
||||
}
|
||||
|
||||
$sharedWithMe = $emi->getRepository(SharedNote::class)->getNotesSharedWithMe($user);
|
||||
$shared = $emi->getRepository(SharedNote::class)->getNotesSharedByMe($user);
|
||||
dump($shared);
|
||||
|
||||
return $this->render('default/profile.html.twig', [
|
||||
'onLoad' => 'rollUp("user");rollUp("settings")',
|
||||
'meta' => $meta,
|
||||
'sharedWithMe' => $sharedWithMe,
|
||||
'shared' => $shared,
|
||||
'user' => $this->getUser(),
|
||||
]);
|
||||
}
|
||||
|
||||
|
@ -41,7 +41,7 @@ class ReferenceController extends AbstractController
|
||||
|
||||
$bible = self::$emi->getRepository(Bible::class)->findRange($bible, [$passage_start, $passage_end]);
|
||||
$passage = "{$passage_start}-{$passage_end}";
|
||||
$label = "{$bible[0]->getLabel()}\n{$bible[0]->getChapter()}:{$passage}";
|
||||
$label = "{$bible[0]->getLabel()}\n{$bible[0]->getChapter()}\n{$passage}";
|
||||
} elseif (is_int($passage)) {
|
||||
$bible = self::$emi->getRepository(Bible::class)->findBy(['book' => $book, 'chapter' => $chapter, 'verse' => $passage]);
|
||||
$label = "{$bible[0]->getLabel()}\n{$bible[0]->getChapter()}:{$passage}";
|
||||
@ -52,9 +52,9 @@ class ReferenceController extends AbstractController
|
||||
$passage = null;
|
||||
}
|
||||
|
||||
if(is_array($bible)) {
|
||||
if (is_array($bible)) {
|
||||
$text = [];
|
||||
foreach($bible as $b) {
|
||||
foreach ($bible as $b) {
|
||||
$text[] = "{$b->getVerse()}. {$b->getContent()}";
|
||||
}
|
||||
} else {
|
||||
@ -93,15 +93,16 @@ class ReferenceController extends AbstractController
|
||||
*
|
||||
* @param Reference $ref
|
||||
*
|
||||
* @return Reference
|
||||
* @return Reference|array
|
||||
*/
|
||||
public static function retrieveHC($ref): Reference
|
||||
public static function retrieveHC(Reference $ref): Reference|array
|
||||
{
|
||||
$r = self::$emi->getRepository(Reference::class)->findBy(['type' => 'hc', 'ndx' => $ref->getNdx()]);
|
||||
$r = self::$emi->getRepository(Reference::class)->findHeidelberg($ref->getLabel());
|
||||
|
||||
if (!$r) {
|
||||
return new Reference();
|
||||
}
|
||||
return $r[0];
|
||||
return $r;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -114,7 +115,7 @@ class ReferenceController extends AbstractController
|
||||
public static function retrieveBC($ref): Reference
|
||||
{
|
||||
$r = self::$emi->getRepository(Reference::class)->findBy(['type' => 'belgic', 'ndx' => $ref->getNdx()]);
|
||||
if(!$r) {
|
||||
if (!$r) {
|
||||
return new Reference();
|
||||
}
|
||||
return $r[0];
|
||||
|
@ -19,6 +19,7 @@ class SecurityController extends AbstractController
|
||||
$lastUsername = $authenticationUtils->getLastUsername();
|
||||
|
||||
return $this->render('security/login.html.twig', [
|
||||
'onLoad' => null,
|
||||
'last_username' => $lastUsername,
|
||||
'error' => $error,
|
||||
]);
|
||||
|
@ -68,12 +68,6 @@ class User implements UserInterface, PasswordAuthenticatedUserInterface, JsonSer
|
||||
#[ORM\OneToMany(targetEntity: Note::class, mappedBy: 'user')]
|
||||
private Collection $notes;
|
||||
|
||||
/**
|
||||
* @var Collection<int, NoteShares>
|
||||
*/
|
||||
#[ORM\OneToMany(targetEntity: NoteShares::class, mappedBy: 'ownerId', orphanRemoval: true)]
|
||||
private Collection $noteShares;
|
||||
|
||||
#[ORM\Column(nullable: true)]
|
||||
private ?array $metaData = null;
|
||||
|
||||
@ -83,7 +77,6 @@ class User implements UserInterface, PasswordAuthenticatedUserInterface, JsonSer
|
||||
$this->speakers = new ArrayCollection();
|
||||
$this->templates = new ArrayCollection();
|
||||
$this->notes = new ArrayCollection();
|
||||
$this->noteShares = new ArrayCollection();
|
||||
}
|
||||
|
||||
public function getId(): ?Uuid
|
||||
@ -319,36 +312,6 @@ class User implements UserInterface, PasswordAuthenticatedUserInterface, JsonSer
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Collection<int, NoteShares>
|
||||
*/
|
||||
public function getNoteShares(): Collection
|
||||
{
|
||||
return $this->noteShares;
|
||||
}
|
||||
|
||||
public function addNoteShare(NoteShares $noteShare): static
|
||||
{
|
||||
if (!$this->noteShares->contains($noteShare)) {
|
||||
$this->noteShares->add($noteShare);
|
||||
$noteShare->setOwner($this);
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function removeNoteShare(NoteShares $noteShare): static
|
||||
{
|
||||
if ($this->noteShares->removeElement($noteShare)) {
|
||||
// set the owning side to null (unless already changed)
|
||||
if ($noteShare->getOwner() === $this) {
|
||||
$noteShare->setOwner(null);
|
||||
}
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getMetaData(): ?array
|
||||
{
|
||||
return $this->metaData;
|
||||
|
@ -25,6 +25,35 @@ class ReferenceRepository extends ServiceEntityRepository
|
||||
->getResult();
|
||||
}
|
||||
|
||||
public function findHeidelberg($ref): array|Reference
|
||||
{
|
||||
if (substr($ref, 0, 2) == 'ld') {
|
||||
$num = substr($ref, 2);
|
||||
$qb = $this->createQueryBuilder('r');
|
||||
$r = $qb->where($qb->expr()->like('r.label', ':ld'))
|
||||
->setParameter('ld', "ld{$num}-%")
|
||||
->getQuery()
|
||||
->getResult()
|
||||
;
|
||||
} elseif (substr($ref, 0, 2) == 'hc') {
|
||||
$num = substr($ref, 2);
|
||||
$qb = $this->createQueryBuilder('r');
|
||||
$r = $qb->where($qb->expr()->like('r.label', ':hc'))
|
||||
->setParameter('hc', "%-hc{$num}")
|
||||
->getQuery()
|
||||
->getResult()
|
||||
;
|
||||
|
||||
if(count($r) > 0) {
|
||||
$r = $r[0];
|
||||
|
||||
$r->setLabel(implode("\n", explode("-", $r->getLabel())));
|
||||
}
|
||||
}
|
||||
|
||||
return $r;
|
||||
}
|
||||
|
||||
// /**
|
||||
// * @return Reference[] Returns an array of Reference objects
|
||||
// */
|
||||
|
Reference in New Issue
Block a user