Blame | Last modification | View Log | RSS feed
<?php
/**
* Copyright(C) 2009-2019 www.seopanel.in. All rights reserved.
* @author Geo Varghese
*
*/
class SD_Manager extends SeoDiary {
var $cronJob = false;
var $statusList;
function __construct() {
parent::__construct();
parent::initPlugin(true);
$this->statusList = array(
'new' => $this->pluginText['New'],
'closed' => $this->pluginText['Closed'],
'cancelled' => $this->pluginText['Cancelled'],
'inprogress' => $this->pluginText['Inprogress'],
'blocked' => $this->pluginText['Blocked'],
'feedback' => $this->pluginText['Feedback'],
);
}
function showSDList($info = "") {
$userId = isLoggedIn ();
$this->set ( 'post', $info );
$cond = "";
$projectCtrler = $this->createHelper ( 'Project' );
$projectList = $projectCtrler->__getAllProjects ( $userId, true );
$this->set ( 'projectList', $projectList );
if (!isAdmin ()) {
if (SD_ALLOW_USER_PROJECTS) {
$prjIdList = [0];
foreach ($projectList as $projectInfo) $prjIdList[] = $projectInfo['id'];
$cond .= " and d.project_id in (".implode(',', $prjIdList).")";
} else {
$cond .= " and d.assigned_user_id=$userId";
}
}
$cond .= !empty( $info ['project_id'] ) ? " and d.project_id=" . intval ( $info ['project_id'] ) : "";
$cond .= !empty( $info ['category_id'] ) ? " and d.category_id=" . intval ( $info ['category_id'] ) : "";
$cond .= !empty( $info ['assigned_user_id'] ) ? " and d.assigned_user_id=" . intval ( $info ['assigned_user_id'] ) : "";
$cond .= !empty( $info ['keyword'] ) ? " and (title LIKE '%" . addslashes ( $info ['keyword'] ) . "%' OR d.description LIKE '%" . addslashes ( $info ['keyword'] ) . "%')" : "";
$cond .= !empty( $info ['status'] ) ? " and d.status='" . addslashes( $info ['status'] ) ."'" : "";
$cond .= !empty( $info ['sort_col'] ) ? " order by " . addslashes ( $info ['sort_col'] ) : "";
$cond .= !empty( $info ['sort_val'] ) ? " " . addslashes ( $info ['sort_val'] ) : "";
$info ['user_id'] = intval ( $info ['assigned_user_id'] );
$pgScriptPath = PLUGIN_SCRIPT_URL . "&action=diaryManager";
$sql = "select d.*,p.name project_name, c.label category_label from sd_seo_diary d, sd_category c, sd_projects p
where d.project_id=p.id and d.category_id=c.id $cond ";
$userCtrler = new UserController ();
$userList = $userCtrler->__getAllUsers ();
$this->set( 'userList', $userList );
$userIdList = [];
foreach ( $userList as $userInfo ) {
$userIdList [$userInfo ['id']] = $userInfo;
}
$this->set ( 'userIdList', $userIdList );
$categoryList = $this->selectDiaryCategory ();
$this->set ( 'categoryList', $categoryList );
$this->set( 'statusList', $this->statusList);
// pagination setup
$this->db->query ( $sql, true );
$this->paging->setDivClass ( 'pagingdiv' );
$this->paging->loadPaging ( $this->db->noRows, SP_PAGINGNO );
$pagingDiv = $this->paging->printPages ( $pgScriptPath, 'searchform', 'scriptDoLoadPost', 'content', '');
$this->set ( 'pagingDiv', $pagingDiv );
$sql .= " limit " . $this->paging->start . "," . $this->paging->per_page;
$projectList = $this->db->select ( $sql );
$this->set ( 'list', $projectList );
$this->set ( 'pageNo', $_GET ['pageno'] );
$this->pluginRender ( 'diary_manager' );
}
/*
* func to create new project
*/
function newDiary($info = '') {
$userId = isLoggedIn ();
$userCtrler = new UserController ();
$userList = $userCtrler->__getAllUsers ();
$this->set ( 'userList', $userList );
$projectCtrler = $this->createHelper ( 'Project' );
$projectList = $projectCtrler->__getAllProjects ( $userId, true );
$this->set ( 'projectList', $projectList );
$categoryList = $this->selectDiaryCategory ();
$this->set ( 'categoryList', $categoryList );
$this->set( 'statusList', $this->statusList);
$this->set ( 'spTextReport', $this->getLanguageTexts('report', $_SESSION['lang_code']));
$this->pluginRender ( 'new_diary' );
}
/*
* func to create diary
*/
function createDiary($listInfo) {
$this->set ( 'post', $listInfo );
$now = date('Y-m-d H:i:s');
$errMsg ['project_id'] = formatErrorMsg ( $this->validate->checkBlank ( $listInfo ['project_id'] ) );
$errMsg ['category_id'] = formatErrorMsg ( $this->validate->checkBlank ( $listInfo ['category_id'] ) );
$errMsg ['title'] = formatErrorMsg ( $this->validate->checkBlank ( $listInfo ['title'] ) );
$errMsg ['description'] = formatErrorMsg ( $this->validate->checkBlank ( $listInfo ['description'] ) );
$errMsg ['status'] = formatErrorMsg ( $this->validate->checkBlank ( $listInfo ['status'] ) );
if (! $this->validate->flagErr) {
if ($this->__checkTitle ($listInfo ['title'], $listInfo ['project_id'] )) {
$errMsg ['title'] = formatErrorMsg ($this->pluginText['Diary already exist']);
$this->validate->flagErr = true;
}
if (!$this->validate->flagErr) {
$listInfo['created_user_id'] = isLoggedIn();
$listInfo['update_time'] = $now;
$listInfo['creation_time'] = $now;
$this->insertDiary($listInfo);
$this->showSDList(['keyword' => $listInfo ['title']]);
exit();
}
}
$this->set('errMsg', $errMsg );
$this->newDiary( $listInfo );
}
function insertDiary($listInfo) {
$sql = "INSERT INTO `sd_seo_diary`(`project_id`, `assigned_user_id`, `category_id`, `title`, `description`, `due_date`, `status`,
`email_notification`, `creation_time`, `update_time`, `created_user_id`)
VALUES('" . intval ( $listInfo ['project_id'] ) . "', '" . intval ( $listInfo ['assigned_user_id'] ) . "',
'" . intval ( $listInfo ['category_id'] ) . "', '" . addslashes ( $listInfo ['title'] ) . "',
'" . addslashes ( $listInfo ['description'] ) . "', '" . addslashes ( $listInfo ['due_date'] ) . "',
'" . addslashes ( $listInfo ['status'] ) . "', ".intval($listInfo['email_notification']).",
'" . addslashes ( $listInfo ['creation_time'] ) . "', '" . addslashes ( $listInfo ['creation_time'] ) . "', ".intval($listInfo['created_user_id']).")";
$this->db->query( $sql );
// email notification enabled, send mail
if (!empty($listInfo['email_notification']) && !empty($listInfo ['assigned_user_id'])) {
$this->sendNotificationMail($listInfo);
}
}
function sendNotificationMail($listInfo) {
$userId = $listInfo ['assigned_user_id'];
$subject = $this->pluginText['Assigned to You'] . ": " . $listInfo['title'];
$userController = new UserController ();
$userInfo = $userController->__getUserInfo ( $userId );
$userName = $userInfo ['first_name'] . "-" . $userInfo ['last_name'];
$adminInfo = $userController->__getAdminInfo();
$adminName = $adminInfo['first_name']."-".$adminInfo['last_name'];
$this->set ( 'userName', $userName );
$this->set ( 'listInfo', $listInfo);
$content = $this->getPluginViewContent('notification_mail');
if (sendMail( $adminInfo ['email'], $adminName, $userInfo['email'], $subject, $content )) {
showSuccessMsg("Notifiaction Mail send successfully to " . $userInfo ['email'], FALSE);
} else {
showErrorMsg('An internal error occured while sending mail!', FALSE);
}
}
/*
* func to edit diary
*/
function editDiary($diaryId, $listInfo = '') {
if (!empty( $diaryId )) {
if (empty($listInfo )) {
$listInfo = $this->__getDiaryInfo ( $diaryId );
}
$this->set ( 'post', $listInfo );
$userCtrler = new UserController ();
$userList = $userCtrler->__getAllUsers ();
$this->set ( 'userList', $userList );
$userId = isLoggedIn ();
$projectCtrler = $this->createHelper ( 'Project' );
$projectList = $projectCtrler->__getAllProjects ( $userId, true );
$this->set ( 'projectList', $projectList );
$categoryList = $this->selectDiaryCategory ();
$this->set ( 'categoryList', $categoryList );
$this->set( 'statusList', $this->statusList);
$this->set ( 'spTextReport', $this->getLanguageTexts('report', $_SESSION['lang_code']));
$this->pluginRender ( 'edit_diary' );
}
}
/*
* func to update project
*/
function updateDiary($listInfo) {
$this->set ( 'post', $listInfo );
$errMsg = [];
$errMsg ['project_id'] = formatErrorMsg ( $this->validate->checkBlank ( $listInfo ['project_id'] ) );
$errMsg ['category_id'] = formatErrorMsg ( $this->validate->checkBlank ( $listInfo ['category_id'] ) );
$errMsg ['title'] = formatErrorMsg ( $this->validate->checkBlank ( $listInfo ['title'] ) );
$errMsg ['description'] = formatErrorMsg ( $this->validate->checkBlank ( $listInfo ['description'] ) );
$errMsg ['status'] = formatErrorMsg ( $this->validate->checkBlank ( $listInfo ['status'] ) );
if (! $this->validate->flagErr) {
if ($this->__checkTitle ( $listInfo ['title'], $listInfo ['project_id'], $listInfo ['id'] )) {
$errMsg ['title'] = formatErrorMsg ($this->pluginText['Diary already exist']);
$this->validate->flagErr = true;
}
if (! $this->validate->flagErr) {
$oldDiaryInfo = $this->__getDiaryInfo($listInfo ['id']);
$sql = "update sd_seo_diary set project_id = " . intval ( $listInfo ['project_id'] ) . ", category_id = " . intval ( $listInfo ['category_id'] ) .
", title = '" . addslashes ( $listInfo ['title'] ) . "', description = '" . addslashes ( $listInfo ['description'] ) .
"', assigned_user_id = '" . intval ( $listInfo ['assigned_user_id'] ) . "', due_date = '" . addslashes ( $listInfo ['due_date'] ) .
"', update_time = '" . date ( "Y-m-d H:i:s" ) . "', status = '" . addslashes ( $listInfo ['status'] ) . "' where id=" . intval ( $listInfo ['id'] );
$this->db->query ( $sql );
// email notification enabled, send mail
if (!empty($listInfo['email_notification']) && !empty($listInfo ['assigned_user_id'])) {
if ($oldDiaryInfo['assigned_user_id'] != $listInfo ['assigned_user_id']) {
$this->sendNotificationMail($listInfo);
}
}
$this->showSDList(['keyword' => $listInfo ['title']]);
exit();
}
}
$this->set ( 'errMsg', $errMsg );
$this->editDiary( $listInfo ['id'], $listInfo );
}
/*
* func to delete project
*/
function deleteDiary($diaryId) {
$diaryId = intval ( $diaryId );
$sql = "delete from sd_seo_diary where id=" . intval ( $diaryId );
$this->db->query ( $sql );
$this->showSDList ();
}
function getUserDiaryList($userId) {
$cond = "";
$userId = intval($userId);
if (!isAdmin()) {
if (SD_ALLOW_USER_PROJECTS) {
$projectCtrler = $this->createHelper ( 'Project' );
$projectList = $projectCtrler->__getAllProjects ( $userId, true );
$prjIdList = [0];
foreach ($projectList as $projectInfo) $prjIdList[] = $projectInfo['id'];
$cond .= " project_id in (".implode(',', $prjIdList).")";
} else {
$cond .= " assigned_user_id=$userId";
}
}
$diaryList = $this->dbHelper->getAllRows('sd_seo_diary', $cond);
return $diaryList;
}
/*
* func to create new comments
*/
function newDiaryComments($info = '') {
$this->set ( 'post', $info );
$userId = isLoggedIn();
$diaryList = $this->getUserDiaryList($userId);
$this->set ( 'diaryList', $diaryList );
if (empty($info['diary_id'] )) {
$diaryId = $diaryList[0]['id'];
} else {
$diaryId = intval($info['diary_id']);
}
if (empty($diaryId)) {
showErrorMsg($_SESSION['text']['common']['No Records Found']);
}
$diaryInfo = $this->__getDiaryInfo($diaryId);
$this->set ('diaryInfo', $diaryInfo );
$this->set ('diaryId', $diaryId );
$userCtrler = new UserController ();
$userList = $userCtrler->__getAllUsers();
$userIdList = [];
foreach ( $userList as $userInfo ) $userIdList [$userInfo ['id']] = $userInfo;
$this->set ( 'userIdList', $userIdList );
$diaryCommentList = $this->getDiaryComments( " and diary_id=" . intval($diaryId));
$this->set ( 'diaryCommentList', $diaryCommentList );
$this->pluginRender ( 'diary_comments' );
}
/*
* func to create project
*/
function createDiaryComment($listInfo) {
$userId = isLoggedIn ();
$this->set ( 'post', $listInfo );
$errMsg ['diary_id'] = formatErrorMsg ( $this->validate->checkBlank ( $listInfo ['diary_id'] ) );
$errMsg ['comments'] = formatErrorMsg ( $this->validate->checkBlank ( $listInfo ['comments'] ) );
if (! $this->validate->flagErr) {
$sql = "INSERT INTO `sd_diary_comments`( `diary_id`, `user_id`, `comments`, `updated_time`)
VALUES ('" . intval ( $listInfo ['diary_id'] ) . "','" . intval ( $userId ) . "',
'" . addslashes ( $listInfo ['comments'] ) . "','". date("Y-m-d H:i:s")."')";
$this->db->query ( $sql );
$this->newDiaryComments(['diary_id' => $listInfo ['diary_id']]);
exit ();
}
$this->set ('errMsg', $errMsg );
$this->newDiaryComments ( $listInfo );
}
/*
* func to project shummary
*/
function showProjectSummery($info = '') {
$this->set ( 'post', $info );
$userId = isLoggedIn ();
$projectCtrler = $this->createHelper ( 'Project' );
$projectList = $projectCtrler->__getAllProjects ( $userId, true );
$this->set ( 'projectList', $projectList );
if (empty($info['project_id'] )) {
$projectId = $projectList[0]['id'];
} else {
$projectId = intval($info['project_id']);
}
if (empty($projectId)) {
showErrorMsg($_SESSION['text']['common']['No Records Found']);
}
$projectInfo = $projectCtrler->__getProjectInfo($projectId);
$this->set('projectInfo', $projectInfo);
$diaryList = $this->__getDiaryList(" project_id = " . intval($projectId));
foreach ( $diaryList as $i => $listInfo ) {
$diaryList[$i]['comment_count'] = $this->getDiarytCommentCount($listInfo['id']);
}
$this->set ( 'diaryList', $diaryList );
$this->set ( 'spTextSA', $this->getLanguageTexts('siteauditor', $_SESSION['lang_code']));
$this->pluginRender ( 'project_summery' );
}
/*
* show tasks assigned users
*/
function showTaskList($info = "") {
$this->set ( 'post', $info );
$userId = isLoggedIn ();
$cond .= " and d.assigned_user_id=$userId";
$cond .= !empty( $info ['project_id'] ) ? " and d.project_id=" . intval ( $info ['project_id'] ) : "";
$cond .= !empty( $info ['keyword'] ) ? " and (title LIKE '%" . addslashes ( $info ['keyword'] ) . "%' OR d.description LIKE '%" . addslashes ( $info ['keyword'] ) . "%')" : "";
$cond .= !empty( $info ['status'] ) ? " and d.status='" . addslashes( $info ['status'] ) ."'" : "";
$cond .= !empty( $info ['sort_col'] ) ? " order by " . addslashes ( $info ['sort_col'] ) : "";
$cond .= !empty( $info ['sort_val'] ) ? " " . addslashes ( $info ['sort_val'] ) : "";
$info ['user_id'] = intval ( $info ['assigned_user_id'] );
$pgScriptPath = PLUGIN_SCRIPT_URL . "&action=myTasks";
$sql = "select d.*,p.name project_name, c.label category_label from sd_seo_diary d, sd_category c, sd_projects p
where d.project_id=p.id and d.category_id=c.id $cond ";
$userCtrler = new UserController ();
$userList = $userCtrler->__getAllUsers ();
$this->set ( 'userList', $userList );
$userIdList = [ ];
foreach ( $userList as $userInfo ) {
$userIdList [$userInfo ['id']] = $userInfo;
}
$this->set ( 'userIdList', $userIdList );
$projectCtrler = $this->createHelper ( 'Project' );
$projectList = $projectCtrler->__getAllProjects ( $userId, true );
$this->set ( 'projectList', $projectList );
$categoryList = $this->selectDiaryCategory ();
$this->set ( 'categoryList', $categoryList );
$this->set ( 'statusList', $this->statusList );
// pagination setup
$this->db->query ( $sql, true );
$this->paging->setDivClass ( 'pagingdiv' );
$this->paging->loadPaging ( $this->db->noRows, SP_PAGINGNO );
$pagingDiv = $this->paging->printPages ( $pgScriptPath, 'searchform', 'scriptDoLoadPost', 'content', '');
$this->set ( 'pagingDiv', $pagingDiv );
$sql .= " limit " . $this->paging->start . "," . $this->paging->per_page;
$taskList = $this->db->select ( $sql );
$this->set ( 'list', $taskList );
$this->set ( 'pageNo', $_GET ['pageno'] );
$this->pluginRender ( 'my_task' );
}
/*
* func to get all category type
*/
function getDiaryComments($condtions = '') {
$sql = "select * from sd_diary_comments where 1=1";
$sql .= empty( $condtions ) ? "" : $condtions;
$diaryCommentList = $this->db->select( $sql );
return $diaryCommentList;
}
/*
* func to get all category type
*/
function selectDiaryCategory($condtions = '') {
$sql = "select id, label from sd_category";
$sql .= empty ( $condtions ) ? "" : $condtions;
$categoryList = $this->db->select ( $sql );
return $categoryList;
}
/*
* func to get all category type
*/
function getDiarytCommentCount($diaryId) {
$diaryCountInfo = $this->dbHelper->getRow('sd_diary_comments', "diary_id=".intval($diaryId), "count(*) count");
return !empty($diaryCountInfo['count']) ? $diaryCountInfo['count'] : 0;
}
/*
* function to check name of project already existing
*/
function __checkTitle($title, $projectId, $diaryId = 0) {
$diaryId = intval ( $diaryId );
$sql = "select id from sd_seo_diary where title='" . addslashes ( $title ) . "' and project_id=".intval($projectId);
$sql .= !empty( $diaryId ) ? " and id!=$diaryId" : "";
$listInfo = $this->db->select ( $sql, true );
return empty ( $listInfo ['id'] ) ? false : $listInfo ['id'];
}
/*
* func to get project info
*/
function __getDiaryInfo($diaryId) {
$sql = "select d.*,p.name project_name from sd_seo_diary d,sd_projects p where d.project_id=p.id and d.id=" . intval ( $diaryId );
$info = $this->db->select ( $sql, true );
return $info;
}
function __getDiaryList($cond = '') {
$diaryList = $this->dbHelper->getAllRows('sd_seo_diary', $cond);
return $diaryList;
}
/*function startCronJob() {
$this->cronJob = true;
$sql = "SELECT `id`,`assigned_user_id`, `due_date`, `status` FROM `sd_seo_diary` WHERE `status`= 'new' or `sd_seo_diary`.`status`='inprogress'";
$diaryList = $this->db->select($sql);
if (count($diaryList) > 0) {
foreach ($diaryList as $diaryListInfo) {
$diaryId =$diaryListInfo['id'];
$this->generateDairyList($diaryId);
}
} else {
echo "Diary List generated for all the projects!";
}
}
function generateDairyList($diaryId) {
$datetime = new DateTime(date('Y-m-d'));
$datetime->modify('+1 day');
$datetime->format('Y-m-d');
$diaryInfo = $this->__getDiaryInfo($diaryId);
if (($diaryInfo['status'] == "new" || "inprogress") || ($diaryInfo['due_date'] > $datetime)) {
$userId = $diaryInfo ['assigned_user_id'];
$subject = "your assingned diary was changed";
$content = $this->getViewContent('mailview', 'ajax', false);
$userController = new UserController ();
$userInfo = $userController->__getUserInfo ( $userId );
$adminInfo = $userController->__getAdminInfo ();
$userName = $userInfo ['first_name'] . "-" . $userInfo ['last_name'];
$this->set ( 'userName', $userName );
if (! sendMail ( $adminInfo ['email'], $userName, $userInfo ['email'], $subject, $content )) {
echo "Reports send successfully to " . $userInfo ['email'] . "\n";
} else {
echo 'An internal error occured while sending mail!';
}
?><br><?php print $adminInfo ['email'];
print $userName;
print $userInfo ['email'];
print $subject;
print $content;
}
}*/
}