listing.php
<?php
/*
You may not change or alter any portion of this comment or credits
of supporting developers from this source code or any supporting source code
which is considered copyrighted (c) material of the original comment or credit authors.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*/
/**
* Alumni module for Xoops
*
* @copyright XOOPS Project https://xoops.org/
* @license GPL 2.0 or later
* @package alumni
* @since 2.6.x
* @author John Mordo (jlm69)
*/
use Xoops\Core\Request;
include __DIR__ . '/header.php';
$moduleDirName = basename(__DIR__);
$main_lang = '_MA_' . strtoupper($moduleDirName);
$myts = MyTextSanitizer::getInstance();
$xoops = Xoops::getInstance();
$module_id = $xoopsModule->getVar('mid');
$groups = '3';
if (is_object($xoopsUser)) {
$groups = $xoopsUser->getGroups();
}
//$gperm_handler = $xoops->getHandler('groupperm');
$perm_itemid = 0;
if (isset($_POST['item_id'])) {
$perm_itemid = (int)$_POST['item_id'];
}
//If no access
if (!$gpermHandler->checkRight('' . $moduleDirName . '_view', $perm_itemid, $groups, $module_id)) {
$xoops->redirect(XOOPS_URL . '/index.php', 3, XoopsLocale::E_NO_ACCESS_PERMISSION);
exit();
}
$prem_perm = '1';
if (!$gpermHandler->checkRight('' . $moduleDirName . '_premium', $perm_itemid, $groups, $module_id)) {
$prem_perm = '0';
}
$lid = Request::getInt('lid', 0);
$xoops->header('module:alumni/alumni_item.tpl');
Xoops::getInstance()->header();
$op = Request::getCmd('op', 'list');
switch ($op) {
case 'list':
default:
$listingHandler = $xoops->getModuleHandler('listing', 'alumni');
$alumni = Alumni::getInstance();
$helper = Xoops::getModuleHelper('alumni');
$module_id = $helper->getModule()->getVar('mid');
$listingObj = $listingHandler->get($lid);
$categoriesHandler = $xoops->getModuleHandler('category', 'alumni');
$catObj = $categoriesHandler->get($listingObj->getVar('cid'));
$homePath = "<a href='" . ALUMNI_URL . "/index.php'>" . XoopsLocale::MAIN . '</a> : ';
$itemPath = "<a href='" . ALUMNI_URL . '/categories.php?cid=' . $catObj->getVar('cid') . "'>" . $catObj->getVar('title') . '</a>';
$path = '';
$myParent = $catObj->getVar('pid');
$catpath_criteria = new CriteriaCompo();
$catpath_criteria->add(new Criteria('cid', $myParent, '='));
$catpath_arr = $categoriesHandler->getAll($catpath_criteria);
foreach (array_keys($catpath_arr) as $i) {
$mytitle = $catpath_arr[$i]->getVar('title');
}
if (0 != $myParent) {
$path = "<a href='" . ALUMNI_URL . '/categories.php?cid=' . $catpath_arr[$i]->getVar('cid') . "'>" . $catpath_arr[$i]->getVar('title') . "</a> : {$path}";
}
$path = "{$homePath}{$path}{$itemPath}";
$path = str_replace(' : ', " <img src='" . XOOPS_URL . '/modules/alumni/images/arrow.gif' . "' style='border-width: 0px;' alt=''> ", $path);
$xoops->tpl()->assign('category_path', $path);
$groups = $xoops->isUser() ? $xoops->user->getGroups() : '3';
$alumni_ids = $xoops->getHandlerGroupPermission()->getItemIds('alumni_view', $groups, $module_id);
$criteria = new CriteriaCompo();
$criteria->add(new Criteria('lid', $lid, '='));
$criteria->add(new Criteria('cid', '(' . implode(', ', $alumni_ids) . ')', 'IN'));
$numrows = $listingHandler->getCount();
$listingArray = $listingHandler->getAll($criteria);
foreach (array_keys($listingArray) as $i) {
$lid = $listingArray[$i]->getVar('lid');
$cid = $listingArray[$i]->getVar('cid');
$name = $listingArray[$i]->getVar('name');
$mname = $listingArray[$i]->getVar('mname');
$lname = $listingArray[$i]->getVar('lname');
$school = $listingArray[$i]->getVar('school');
$year = $listingArray[$i]->getVar('year');
$studies = $listingArray[$i]->getVar('studies');
$activities = $listingArray[$i]->getVar('activities');
$extrainfo = $listingArray[$i]->getVar('extrainfo');
$occ = $listingArray[$i]->getVar('occ');
$date = $listingArray[$i]->getVar('date');
$date = XoopsLocale::formatTimestamp($date, 's');
$email = $listingArray[$i]->getVar('email');
$submitter = $listingArray[$i]->getVar('submitter');
$usid = $listingArray[$i]->getVar('usid');
$town = $listingArray[$i]->getVar('town');
$valid = $listingArray[$i]->getVar('valid');
$photo = $listingArray[$i]->getVar('photo');
$photo2 = $listingArray[$i]->getVar('photo2');
$view = $listingArray[$i]->getVar('view');
$recordexist = false;
if (0 != $lid) {
$recordexist = true;
$listingHandler->updateCounter($lid);
}
$xoops->tpl()->assign('add_from', AlumniLocale::ALUMNI_LISTINGS . ' ' . $xoopsConfig['sitename']);
$xoops->tpl()->assign('add_from_title', AlumniLocale::ALUMNI_LISTINGS);
$xoops->tpl()->assign('add_from_sitename', $xoopsConfig['sitename']);
$xoops->tpl()->assign('class_of', AlumniLocale::CLASSOF);
$xoops->tpl()->assign('listing_exists', $recordexist);
$count = 0;
$x = 0;
$i = 0;
$printA = '<a href="print.php?lid=' . addslashes($lid) . '" target="_blank"><img src="images/print.gif" border=0 alt="' . AlumniLocale::THIS_PRINT . '" width=15 height=11></a> ';
$mailA = "<a href=\"sendfriend.php?op=SendFriend&lid=$lid\"><img src=\"../{$moduleDirName}/images/friend.gif\" border=\"0\" alt=\"" . AlumniLocale::FRIENDSEND . '" width="15" height="11"></a>';
if ($usid > 0) {
$xoops->tpl()->assign('submitter', AlumniLocale::SUBMITTED_BY . "<a href='" . XOOPS_URL . '/userinfo.php?uid=' . addslashes($usid) . "'>$submitter</a>");
} else {
$xoops->tpl()->assign('submitter', AlumniLocale::SUBMITTED_BY . "$submitter");
}
$xoops->tpl()->assign('print', $printA);
$xoops->tpl()->assign('sfriend', $mailA);
$xoops->tpl()->assign('read', $view);
if ($xoops->isUser()) {
$calusern = $xoops->user->getVar('uid', 'E');
if ($usid == $calusern) {
$xoops->tpl()->assign(
'modify',
'<a href="listing.php?op=edit_listing&lid=' . addslashes($lid) . '&cid=' . addslashes($cid) . '">' . AlumniLocale::MODIFY . '</a> | <a href="listing.php?op=delete_listing&lid=' . addslashes($lid) . '">' . XoopsLocale::A_DELETE . '</a>'
);
}
if ($xoops->user->isAdmin()) {
$xoops->tpl()->assign('admin', '<a href="admin/alumni.php?op=edit_listing&lid=' . addslashes($lid) . '&cid=' . addslashes($cid) . '"><img src="images/modif.gif" border=0 alt="' . AlumniLocale::MODADMIN . '"></a>');
}
}
$activities1 = $myts->displayTarea($activities, 1, 0, 1, 1, 0);
$xoops->tpl()->assign('name', $name);
$xoops->tpl()->assign('mname', $mname);
$xoops->tpl()->assign('lname', $lname);
$xoops->tpl()->assign('school', $school);
$xoops->tpl()->assign('year', $year);
$xoops->tpl()->assign('studies', $studies);
$xoops->tpl()->assign('name_head', AlumniLocale::NAME_2);
$xoops->tpl()->assign('class_of', AlumniLocale::CLASSOF);
$xoops->tpl()->assign('mname_head', AlumniLocale::MNAME_2);
$xoops->tpl()->assign('lname_head', AlumniLocale::LNAME_2);
$xoops->tpl()->assign('school_head', AlumniLocale::SCHOOL);
$xoops->tpl()->assign('year_head', AlumniLocale::YEAR);
$xoops->tpl()->assign('studies_head', AlumniLocale::STUDIES_2);
$xoops->tpl()->assign('local_town', $town);
$xoops->tpl()->assign('local_head', AlumniLocale::TOWN_2);
$xoops->tpl()->assign('alumni_mustlogin', AlumniLocale::MUSTLOGIN);
$xoops->tpl()->assign('photo_head', AlumniLocale::GRAD_PHOTO);
$xoops->tpl()->assign('photo2_head', AlumniLocale::NOW_PHOTO);
$xoops->tpl()->assign('activities', $activities1);
$xoops->tpl()->assign('extrainfo', $myts->displayTarea($extrainfo, 1));
$xoops->tpl()->assign('activities_head', AlumniLocale::ACTIVITIES_2);
$xoops->tpl()->assign('extrainfo_head', AlumniLocale::EXTRAINFO_2);
if ($email) {
$xoops->tpl()->assign('contact_head', AlumniLocale::CONTACT_2);
$xoops->tpl()->assign('contact_email', "<a href=\"contact.php?lid=$lid\">" . AlumniLocale::EMAIL . '</a>');
}
$xoops->tpl()->assign('contact_occ_head', AlumniLocale::OCC_2);
$xoops->tpl()->assign('contact_occ', $occ);
$xoops->tpl()->assign('photo', '');
$xoops->tpl()->assign('photo2', '');
if ($photo) {
$xoops->tpl()->assign('photo', "<img src=\"photos/grad_photo/$photo\" alt=\"\" width=\"125\"/>");
}
if ($photo2) {
$xoops->tpl()->assign('photo2', "<img src=\"photos/now_photo/$photo2\" alt=\"\" width=\"125\">");
}
$xoops->tpl()->assign('date', AlumniLocale::LISTING_ADDED . " $date ");
$xoops->tpl()->assign('link_main', "<a href=\"../{$moduleDirName}/\">" . XoopsLocale::MAIN . '</a>');
}
$xoops->tpl()->assign('no_listing', 'no listing');
break;
case 'new_listing':
$xoops->header();
$module_id = $xoopsModule->getVar('mid');
$groups = '3';
if (is_object($xoopsUser)) {
$groups = $xoopsUser->getGroups();
}
// $gperm_handler = $xoops->getHandler('groupperm');
$perm_itemid = 0;
if (isset($_POST['item_id'])) {
$perm_itemid = (int)$_POST['item_id'];
}
//If no access
if (!$gpermHandler->checkRight('' . $moduleDirName . '_view', $perm_itemid, $groups, $module_id)) {
$xoops->redirect(XOOPS_URL . '/index.php', 3, _NOPERM);
exit();
}
$obj = $listingHandler->create();
$new_id = $listingHandler->get_new_id();
$form = $xoops->getModuleForm($obj, 'listing');
$form->display();
break;
case 'save_listing':
if (!$xoops->security()->check()) {
$xoops->redirect('index.php', 3, implode(',', $xoops->security()->getErrors()));
}
if ('1' == $xoops->getModuleConfig('alumni_use_captcha') & !$xoops->user->isAdmin()) {
$xoopsCaptcha = XoopsCaptcha::getInstance();
if (!$xoopsCaptcha->verify()) {
$xoops->redirect('javascript:history.go(-1)', 4, $xoopsCaptcha->getMessage());
exit(0);
}
}
$lid = Request::getInt('lid', 0);
if (isset($lid)) {
$obj = $listingHandler->get($lid);
$obj->setVar('date', Request::getInt('date'));
} else {
$obj = $listingHandler->create();
$obj->setVar('date', time());
$lid = '0';
}
$photo_old = Request::getString('photo_old', '');
$destination = XOOPS_ROOT_PATH . "/uploads/{$moduleDirName}/photos/grad_photo";
$del_photo = Request::getInt('del_photo', 0);
if (isset($del_photo)) {
if ('1' == $del_photo) {
if (@file_exists('' . $destination . '/' . $photo_old . '')) {
unlink('' . $destination . '/' . $photo_old . '');
}
$obj->setVar('photo', '');
}
}
$photo2_old = Request::getString('photo2_old', '');
$destination2 = XOOPS_ROOT_PATH . "/uploads/{$moduleDirName}/photos/now_photo";
$del_photo2 = Request::getInt('del_photo2', 0);
if (isset($del_photo2)) {
if ('1' == $del_photo2) {
if (@file_exists('' . $destination2 . '/' . $photo2_old . '')) {
unlink('' . $destination2 . '/' . $photo2_old . '');
}
$obj->setVar('photo2', '');
}
}
$cid = Request::getInt('cid', 0);
if (isset($cid)) {
$cat_name = '';
$categoriesHandler = $xoops->getModuleHandler('category', 'alumni');
$catObj = $categoriesHandler->get($cid);
$cat_name = $catObj->getVar('title');
}
if (isset($lid)) {
$obj->setVar('lid', $lid);
}
$obj->setVar('cid', Request::getInt('cid', 0));
$obj->setVar('name', Request::getString('name'));
$obj->setVar('mname', Request::getString('mname'));
$obj->setVar('lname', Request::getString('lname'));
$obj->setVar('school', $cat_name);
$obj->setVar('year', Request::getInt('year'));
$obj->setVar('studies', Request::getString('studies'));
$obj->setVar('activities', Request::getString('activities'));
$obj->setVar('extrainfo', Request::getString('extrainfo'));
$obj->setVar('occ', Request::getString('occ'));
$obj->setVar('email', Request::getString('email'));
$obj->setVar('submitter', Request::getString('submitter'));
$obj->setVar('usid', Request::getInt('usid'));
$obj->setVar('town', Request::getString('town'));
if ('1' == $xoops->getModuleConfig('alumni_moderated')) {
$obj->setVar('valid', '0');
} else {
$obj->setVar('valid', '1');
}
$date = time();
if (!empty($_FILES['photo']['name'])) {
include_once XOOPS_ROOT_PATH . '/class/uploader.php';
$uploaddir = XOOPS_ROOT_PATH . '/modules/alumni/photos/grad_photo';
$photomax = $xoops->getModuleConfig('alumni_photomax');
$maxwide = $xoops->getModuleConfig('alumni_maxwide');
$maxhigh = $xoops->getModuleConfig('alumni_maxhigh');
$allowed_mimetypes = ['image/gif', 'image/jpg', 'image/jpeg', 'image/pjpeg', 'image/png', 'image/x-png'];
$uploader = new XoopsMediaUploader($uploaddir, $allowed_mimetypes, $photomax, $maxwide, $maxhigh);
if ($uploader->fetchMedia($_POST['xoops_upload_file'][0])) {
$uploader->setTargetFileName($date . '_' . $_FILES['photo']['name']);
$uploader->fetchMedia($_POST['xoops_upload_file'][0]);
if (!$uploader->upload()) {
$errors = $uploader->getErrors();
$xoops->redirect('javascript:history.go(-1)', 3, $errors);
} else {
$obj->setVar('photo', $uploader->getSavedFileName());
}
} else {
$obj->setVar('photo', Request::getString('photo'));
}
}
if (!empty($_FILES['photo2']['name'])) {
include_once XOOPS_ROOT_PATH . '/class/uploader.php';
$uploaddir2 = XOOPS_ROOT_PATH . '/modules/alumni/photos/now_photo';
$photomax = $xoops->getModuleConfig('alumni_photomax');
$maxwide = $xoops->getModuleConfig('alumni_maxwide');
$maxhigh = $xoops->getModuleConfig('alumni_maxhigh');
$allowed_mimetypes = ['image/gif', 'image/jpg', 'image/jpeg', 'image/pjpeg', 'image/png', 'image/x-png'];
$uploader2 = new XoopsMediaUploader($uploaddir2, $allowed_mimetypes, $photomax, $maxwide, $maxhigh);
if ($uploader2->fetchMedia($_POST['xoops_upload_file'][1])) {
$uploader2->setTargetFileName($date . '_' . $_FILES['photo2']['name']);
$uploader2->fetchMedia($_POST['xoops_upload_file'][1]);
if (!$uploader2->upload()) {
$errors = $uploader2->getErrors();
$xoops->redirect('javascript:history.go(-1)', 3, $errors);
} else {
$obj->setVar('photo2', $uploader2->getSavedFileName());
}
} else {
$obj->setVar('photo2', Request::getString('photo2'));
}
}
if ($new_id = $listingHandler->insert($obj)) {
if ('1' == $xoops->getModuleConfig('alumni_moderated')) {
$xoops->redirect('index.php', 3, AlumniLocale::MODERATE);
} else {
$xoops->redirect('listing.php?lid=' . $new_id . '', 3, XoopsLocale::S_DATABASE_UPDATED);
}
//notifications
if (0 == $lid && $xoops->isActiveModule('notifications')) {
$notification_handler = Notifications::getInstance()->getHandlerNotification();
$tags = [];
$tags['MODULE_NAME'] = 'alumni';
$tags['ITEM_NAME'] = Request::getInt('lname', '');
$tags['ITEM_URL'] = XOOPS_URL . '/modules/alumni/listing.php?lid=' . $new_id;
$notification_handler->triggerEvent('global', 0, 'new_listing', $tags);
$notification_handler->triggerEvent('category', $new_id, 'new_listing', $tags);
}
}
echo $obj->getHtmlErrors();
$form = $xoops->getModuleForm($obj, 'listing');
$form->display();
break;
case 'edit_listing':
$lid = Request::getInt('lid', 0);
$listingHandler = $xoops->getModuleHandler('listing', 'alumni');
$obj = $listingHandler->get($lid);
$form = $xoops->getModuleForm($obj, 'listing');
$form->display();
break;
case 'delete_listing':
$listingHandler = $xoops->getModuleHandler('listing', 'alumni');
$lid = Request::getInt('lid', 0);
$ok = Request::getInt('ok', 0);
$obj = $listingHandler->get($lid);
if (1 == $ok) {
if (!$xoops->security()->check()) {
$xoops->redirect('index.php', 3, implode(',', $xoops->security()->getErrors()));
}
if ($listingHandler->delete($obj)) {
$xoops->redirect('index.php', 3, XoopsLocale::S_DATABASE_UPDATED);
} else {
echo $xoops->alert('error', $obj->getHtmlErrors());
}
} else {
echo $xoops->confirm(['ok' => 1, 'lid' => $lid, 'op' => 'delete_listing'], 'listing.php', XoopsLocale::Q_ARE_YOU_SURE_YOU_WANT_TO_DELETE_THIS_ITEM . '<br><span class="red">' . $obj->getVar('lname') . '<span>');
}
break;
}
Xoops::getInstance()->footer();