Skip to content

Commit

Permalink
version 2
Browse files Browse the repository at this point in the history
  • Loading branch information
TobiasKrais committed May 28, 2024
1 parent 3786ec5 commit ae5584a
Show file tree
Hide file tree
Showing 46 changed files with 314 additions and 4,192 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/publish-to-redaxo-org.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ jobs:
redaxo_publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- uses: FriendsOfREDAXO/installer-action@v1
with:
myredaxo-username: ${{ secrets.MYREDAXO_USERNAME }}
Expand Down
17 changes: 17 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# D2U Jobs Addon

Dieses Addon wurde durch das Stellenmarkt Addon (Addon Key: jobs) abgelöst. Für den Umstieg bitte folgende Anpassungen vornehmen:

- Für die automatische Datenübernahme das d2u_jobs Addon auf Version 2.0.0 aktualisieren.
- Die Beispielmodule werden automatisch aktualisiert. Sind eigene Module vorhangen, dann bitte folgende Anpassungen vornehmen:
- Das Prefix "d2u_" überall entfernen:
- Aus den Datenbanktabellennamen den Prefix "d2u_" entfernen.
- Aus den Sprog Wildcards das Prefix "d2u_" entfernen.
- Aus dem Media Manager Effekt das Prefix "d2u_" entfernen.
- Aus dem key der rex_config Werten das Prefix "d2u_" entfernen.
- Klassennamen anpassen:
- D2U_Jobs\Category wird zu FriendsOfRedaxo\Jobs\Category.
- D2U_Jobs\Contact wird zu FriendsOfRedaxo\Jobs\Contact.
- D2U_Jobs\Job wird zu FriendsOfRedaxo\Jobs\Job.
- D2U_Jobs\hr4you wird zu FriendsOfRedaxo\Jobs\Hr4youImport.
- d2u_jobs_frontend_helper wird zu FriendsOfRedaxo\Jobs\FrontendHelper
Binary file removed assets/noavatar.jpg
Binary file not shown.
160 changes: 1 addition & 159 deletions boot.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,162 +2,4 @@

if (rex::isBackend() && is_object(rex::getUser())) {
rex_perm::register('d2u_jobs[]', rex_i18n::msg('d2u_jobs_rights_all'));
rex_perm::register('d2u_jobs[edit_lang]', rex_i18n::msg('d2u_jobs_rights_edit_lang'), rex_perm::OPTIONS);
rex_perm::register('d2u_jobs[edit_data]', rex_i18n::msg('d2u_jobs_rights_edit_data'), rex_perm::OPTIONS);
rex_perm::register('d2u_jobs[settings]', rex_i18n::msg('d2u_jobs_rights_settings'), rex_perm::OPTIONS);
}

// EPs
if (rex::isBackend()) {
rex_extension::register('ART_PRE_DELETED', 'rex_d2u_jobs_article_is_in_use');
rex_extension::register('CLANG_DELETED', 'rex_d2u_jobs_clang_deleted');
rex_extension::register('MEDIA_IS_IN_USE', 'rex_d2u_jobs_media_is_in_use');
} else {
// Delete attachments after sending application e-mails
rex_extension::register('YFORM_EMAIL_SENT', static function (rex_extension_point $ep_yform_sent) {
if ('d2u_jobs_application' === $ep_yform_sent->getSubject()) {
rex_extension::register('RESPONSE_SHUTDOWN', static function (rex_extension_point $ep_response_shutdown) {
$folder = rex_path::pluginData('yform', 'manager') .'upload/frontend';
if (file_exists($folder)) {
$objects = scandir($folder);
if (is_array($objects)) {
foreach ($objects as $object) {
if ('.' !== $object && '..' !== $object) {
unlink($folder .'/'. $object);
}
}
}
}
});
}
});
}

/**
* Checks if article is used by this addon.
* @param rex_extension_point<string> $ep Redaxo extension point
* @throws rex_api_exception If article is used
* @return string empty string if article is not uses
*/
function rex_d2u_jobs_article_is_in_use(rex_extension_point $ep)
{
$warning = [];
$params = $ep->getParams();
$article_id = $params['id'];

// Settings
$addon = rex_addon::get('d2u_jobs');
if ($addon->hasConfig('article_id') && (int) $addon->getConfig('article_id') === $article_id) {
$message = '<a href="index.php?page=d2u_jobs/settings">'. rex_i18n::msg('d2u_jobs_rights_all') .' - '. rex_i18n::msg('d2u_helper_settings') . '</a>';
$warning[] = $message;
}

if (count($warning) > 0) {
throw new rex_api_exception(rex_i18n::msg('d2u_helper_rex_article_cannot_delete') .'<ul><li>'. implode('</li><li>', $warning) .'</li></ul>');
}

return '';
}

/**
* Deletes language specific configurations and objects.
* @param rex_extension_point<array<string>> $ep Redaxo extension point
* @return array<string> Warning message as array
*/
function rex_d2u_jobs_clang_deleted(rex_extension_point $ep)
{
$warning = $ep->getSubject();
$params = $ep->getParams();
$clang_id = $params['id'];

// Delete
$categories = \D2U_Jobs\Category::getAll($clang_id);
foreach ($categories as $category) {
$category->delete(false);
}
$jobs = \D2U_Jobs\Job::getAll($clang_id, 0, false);
foreach ($jobs as $job) {
$job->delete(false);
}

// Delete language settings
if (rex_config::has('d2u_jobs', 'lang_replacement_'. $clang_id)) {
rex_config::remove('d2u_jobs', 'lang_replacement_'. $clang_id);
}
// Delete language replacements
d2u_jobs_lang_helper::factory()->uninstall($clang_id);

return $warning;
}

/**
* Checks if media is used by this addon.
* @param rex_extension_point<array<string>> $ep Redaxo extension point
* @return array<string> Warning message as array
*/
function rex_d2u_jobs_media_is_in_use(rex_extension_point $ep)
{
$warning = $ep->getSubject();
$params = $ep->getParams();
$filename = addslashes($params['filename']);

// Jobs
$sql_jobs = rex_sql::factory();
$sql_jobs->setQuery('SELECT lang.job_id, name FROM `' . rex::getTablePrefix() . 'd2u_jobs_jobs_lang` AS lang '
.'LEFT JOIN `' . rex::getTablePrefix() . 'd2u_jobs_jobs` AS jobs ON lang.job_id = jobs.job_id '
.'WHERE picture = "'. $filename .'" '
.'GROUP BY job_id');

// Categories
$sql_categories = rex_sql::factory();
$sql_categories->setQuery('SELECT lang.category_id, name FROM `' . rex::getTablePrefix() . 'd2u_jobs_categories_lang` AS lang '
.'LEFT JOIN `' . rex::getTablePrefix() . 'd2u_jobs_categories` AS categories ON lang.category_id = categories.category_id '
.'WHERE picture = "'. $filename .'"');

// Contacts
$sql_contacts = rex_sql::factory();
$sql_contacts->setQuery('SELECT contact_id, name FROM `' . rex::getTablePrefix() . 'd2u_jobs_contacts` '
.'WHERE picture = "'. $filename .'"');

// Prepare warnings
// Jobs
for ($i = 0; $i < $sql_jobs->getRows(); ++$i) {
$message = '<a href="javascript:openPage(\'index.php?page=d2u_jobs/jobs&func=edit&entry_id='.
$sql_jobs->getValue('job_id') .'\')">'. rex_i18n::msg('d2u_jobs_rights_all') .' - '. rex_i18n::msg('d2u_jobs') .': '. $sql_jobs->getValue('name') .'</a>';
if (!in_array($message, $warning, true)) {
$warning[] = $message;
}
$sql_jobs->next();
}

// Categories
for ($i = 0; $i < $sql_categories->getRows(); ++$i) {
$message = '<a href="javascript:openPage(\'index.php?page=d2u_jobs/category&func=edit&entry_id='. $sql_categories->getValue('category_id') .'\')">'.
rex_i18n::msg('d2u_jobs_rights_all') .' - '. rex_i18n::msg('d2u_helper_category') .': '. $sql_categories->getValue('name') . '</a>';
if (!in_array($message, $warning, true)) {
$warning[] = $message;
}
$sql_categories->next();
}

// Contacts
for ($i = 0; $i < $sql_contacts->getRows(); ++$i) {
$message = '<a href="javascript:openPage(\'index.php?page=d2u_jobs/contact&func=edit&entry_id='. $sql_contacts->getValue('contact_id') .'\')">'.
rex_i18n::msg('d2u_jobs_rights_all') .' - '. rex_i18n::msg('d2u_jobs_contacts') .': '. $sql_contacts->getValue('name') . '</a>';
if (!in_array($message, $warning, true)) {
$warning[] = $message;
}
$sql_contacts->next();
}

// Settings
$addon = rex_addon::get('d2u_jobs');
if ($addon->hasConfig('logo') && $addon->getConfig('logo') === $filename) {
$message = '<a href="javascript:openPage(\'index.php?page=d2u_jobs/settings\')">'.
rex_i18n::msg('d2u_jobs') .' - '. rex_i18n::msg('d2u_helper_settings') . '</a>';
if (!in_array($message, $warning, true)) {
$warning[] = $message;
}
}
return $warning;
}
}
13 changes: 6 additions & 7 deletions help.php
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
<b>D2U Jobs Addon</b>

<br /><br />
<p>Komfortable Verwaltung von Stellenangeboten. Mit einem Plugin können auch
aus der Software HR4YOU per XML Stellen importiert werden. Die Ausgabe der
Stellen kann zusätzlich im JSON-LD Format erfolgen, damit sie in Google Jobs
angezeigt werden können.</p>
<?php
$readmePath = rex_path::addon('d2u_jobs', 'README.md');
$readmeContent = rex_file::get($readmePath);
if(null !== $readmeContent) {
echo rex_markdown::factory()->parse($readmeContent);
}
Loading

0 comments on commit ae5584a

Please sign in to comment.