Skip to content

Commit

Permalink
router tentatively working with aliases for quizzes finally
Browse files Browse the repository at this point in the history
  • Loading branch information
kevinsguides committed Aug 9, 2023
1 parent 2777cd5 commit 87e3b09
Show file tree
Hide file tree
Showing 9 changed files with 321 additions and 118 deletions.
7 changes: 7 additions & 0 deletions administrator/components/com_yaquiz/forms/quiz.xml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,13 @@ label="COM_YAQUIZ_YAQUIZ_TITLE_LABEL"
required="true"
/>
<field
name="alias"
type="text"
label="JFIELD_ALIAS_LABEL"
description="JFIELD_ALIAS_DESC"
class="validate-alias"
/>
<field
name="catid"
type="categoryedit"
label="JCATEGORY"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,3 +26,5 @@ COM_YAQ_MENU_CERTVERIFY="YaQuiz - Certificate Verification"
COM_YAQ_MENU_CERTVERIFYDESC="Display a form to verify a certificate."
COM_YAQUIZ_MENU_CATEGORIES="YaQuiz - Categories"
COM_YAQUIZ_MENU_CATEGORIES_DESC="Display a list of quiz categories. <strong>THIS IS NOT IMPLEMENTED YET BUT YOU SHOULD USE IT AS YOUR QUIZ ROOT FOR SEO/URL REWRITING PURPOSES.</strong>"

COM_YAQUIZ_UPDATE_0_4_25="YaQuiz Table Updates For v0.4.25 Completed (alias generated for quizzes)"
23 changes: 23 additions & 0 deletions administrator/components/com_yaquiz/script.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

use Joomla\CMS\Language\Text;
use Joomla\CMS\Factory;
use KevinsGuides\Component\Yaquiz\Administrator\Model\YaquizModel;

class com_yaquizInstallerScript
{
Expand Down Expand Up @@ -78,6 +79,28 @@ public function postflight($type, $parent)
$app->enqueueMessage(Text::_('COM_YAQUIZ_UPDATE_0_4_10'), 'notice');

}


//if we're updating from a version older than 0.4.25, we need to generate alias for quizzes based off their titles
if (version_compare($this->old_version_short, '0.4.25', '<')){

$db = Factory::getContainer()->get('DatabaseDriver');
$db->setQuery('SELECT * FROM #__com_yaquiz_quizzes');
$quizzes = $db->loadObjectList();

$yaqmodel = new YaquizModel;

foreach ($quizzes as $quiz){
$alias = $yaqmodel->sanitizeAlias('', $quiz->title);
$db->setQuery('UPDATE #__com_yaquiz_quizzes SET alias = "' . $alias . '" WHERE id = ' . $quiz->id);
$db->execute();
}

$app = Factory::getApplication();
$app->enqueueMessage(Text::_('COM_YAQUIZ_UPDATE_0_4_25'), 'notice');

}

}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,11 +63,16 @@ public function allowEdit()
{

$user = Factory::getApplication()->getIdentity();
Log::add('checking permissions', Log::INFO, 'com_yaquiz');

// Check edit
if ($user->authorise('core.edit', 'com_yaquiz')) {
Log::add('YaquizController::allowEdit() core.edit allowed', Log::INFO, 'com_yaquiz');
return true;
}
else{
Log::add('YaquizController::allowEdit() core.edit NOT allowed', Log::INFO, 'com_yaquiz');
}

// Check edit own
if ($user->authorise('core.edit.own', 'com_yaquiz')) {
Expand Down
37 changes: 23 additions & 14 deletions administrator/components/com_yaquiz/src/Model/YaquizModel.php
Original file line number Diff line number Diff line change
Expand Up @@ -62,12 +62,6 @@ public function getForm($data = [], $loadData = true)
//the default access level
$access = $cParams->get('access', 1);

//permissions
if($app->getIdentity()->authorise('core.manage', 'com_yaquiz') != true){
$app->enqueueMessage(Text::_('COM_YAQUIZ_PERM_REQUIRED_MANAGE'), 'error');
return false;
}


//if layout is edit
if ($app->input->get('layout') == 'edit') {
Expand Down Expand Up @@ -104,12 +98,6 @@ public function getForm($data = [], $loadData = true)

$params = $this->getParams($data->id);

//they must have core.edit permissions, or be the creator of the quiz
if($app->getIdentity()->authorise('core.edit.own', 'com_yaquiz') == true && $data->created_by != $app->getIdentity()->id){
$app->enqueueMessage(Text::_('COM_YAQUIZ_PERM_REQUIRED_EDITOWN'), 'error');
return false;
}


//get 'quiz_displaymode' from params
Log::add('params: ' . $params['quiz_displaymode'], Log::INFO, 'com_yaquiz');
Expand Down Expand Up @@ -216,6 +204,8 @@ public function insert($data)
return;
}

$alias = $this->sanitizeAlias($data['alias'], $data['title']);

Log::add('insert called in quizmodel', Log::INFO, 'com_yaquiz');
//insert quiz
$db = Factory::getContainer()->get('DatabaseDriver');
Expand All @@ -225,8 +215,11 @@ public function insert($data)
$data['created_by'] = $app->getIdentity()->id;
$data['modified_by'] = $app->getIdentity()->id;
$data['checked_out'] = 0;
$query->columns('title, description, published, created_by, created, modified_by, modified, params, access, hits, catid');
$query->values($db->quote($data['title']) . ', ' . $db->quote($data['description']) . ', ' . $db->quote($data['published']) . ', ' . $db->quote($data['created_by']) . ', ' . $db->quote($data['created']) . ', ' . $db->quote($data['modified_by']) . ', ' . $db->quote($data['modified']) . ', ' . $db->quote($this->dataToParams($data)) . ', ' . $db->quote($data['access']) . ', ' . $db->quote($data['hits']) . ', ' . $db->quote($data['catid']));



$query->columns('title, alias, description, published, created_by, created, modified_by, modified, params, access, hits, catid');
$query->values($db->quote($data['title']) . ', ' . $db->quote($alias) . ', ' . $db->quote($data['description']) . ', ' . $db->quote($data['published']) . ', ' . $db->quote($data['created_by']) . ', ' . $db->quote($data['created']) . ', ' . $db->quote($data['modified_by']) . ', ' . $db->quote($data['modified']) . ', ' . $db->quote($this->dataToParams($data)) . ', ' . $db->quote($data['access']) . ', ' . $db->quote($data['hits']) . ', ' . $db->quote($data['catid']));
$db->setQuery($query);
$db->execute();
return $db->insertid();
Expand All @@ -241,6 +234,10 @@ public function update($data)
$query = $db->getQuery(true);
$query->update('#__com_yaquiz_quizzes');
$query->set('title = ' . $db->quote($data['title']));

$alias = $this->sanitizeAlias($data['alias'], $data['title']);
$query->set('alias = ' . $db->quote($alias));

$query->set('description = ' . $db->quote($data['description']));
$query->set('published = ' . $db->quote($data['published']));
$query->set('modified_by = ' . $app->getIdentity()->id);
Expand All @@ -255,6 +252,18 @@ public function update($data)

}

public function sanitizeAlias($alias, $title){
//if alias is empty, generate one from title
if($alias == null || $alias == ''){
$alias = $title;
}
$alias = str_replace(' ', '-', $alias);
$alias = preg_replace('/[^A-Za-z0-9\-]/', '', $alias);
//lower case
$alias = strtolower($alias);
return $alias;
}

public function addQuestionsToQuiz($quizid, $questionids)
{

Expand Down
Loading

0 comments on commit 87e3b09

Please sign in to comment.