201 lines
6.6 KiB
PHP
Executable File
201 lines
6.6 KiB
PHP
Executable File
<?php
|
|
/**
|
|
* The control file of action module of XXB.
|
|
*
|
|
* @copyright Copyright 2009-2023 禅道软件(青岛)有限公司(ZenTao Software (Qingdao) Co., Ltd., www.zentao.net)
|
|
* @license ZOSL (https://zpl.pub/page/zoslv1.html)
|
|
* @author Yidong Wang <yidong@cnezsoft.com>
|
|
* @package action
|
|
* @version $Id$
|
|
* @link https://xuanim.com
|
|
*/
|
|
class action extends control
|
|
{
|
|
/**
|
|
* browse history actions and records.
|
|
*
|
|
* @param string $objectType
|
|
* @param int $objectID
|
|
* @param string $action
|
|
* @param string $from
|
|
* @access public
|
|
* @return void
|
|
*/
|
|
public function history($objectType, $objectID, $action = '', $from = 'view')
|
|
{
|
|
$this->view->actions = $this->action->getList($objectType, $objectID, $action);
|
|
$this->view->datingList = $this->action->getDatingList($objectType, $objectID);
|
|
$this->view->objectType = $objectType;
|
|
$this->view->objectID = $objectID;
|
|
$this->view->users = $this->loadModel('user')->getPairs();
|
|
$this->view->contacts = $this->loadModel('contact', 'crm')->getPairs();
|
|
$this->view->from = $from;
|
|
$this->view->behavior = $action;
|
|
$this->display();
|
|
}
|
|
|
|
/**
|
|
* Edit comment of an action.
|
|
*
|
|
* @param int $actionID
|
|
* @access public
|
|
* @return void
|
|
*/
|
|
public function editComment($actionID)
|
|
{
|
|
if(!strip_tags($this->post->lastComment)) $this->send(array('result' => 'success', 'locate' => $this->server->http_referer));
|
|
$this->action->updateComment($actionID);
|
|
$this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => $this->server->http_referer));
|
|
}
|
|
|
|
/**
|
|
* Send email.
|
|
*
|
|
* @param int $actionID
|
|
* @param int $nextContact
|
|
* @param string $nextDate
|
|
* @access public
|
|
* @return void
|
|
*/
|
|
public function sendmail($actionID, $nextContact, $nextDate)
|
|
{
|
|
/* Reset $this->output. */
|
|
$this->clear();
|
|
|
|
/* Get action info. */
|
|
$action = $this->loadModel('action')->getById($actionID);
|
|
if($action->action != 'dating') return false;
|
|
|
|
$history = $this->action->getHistory($actionID);
|
|
$action->history = isset($history[$actionID]) ? $history[$actionID] : array();
|
|
|
|
/* Set toList and ccList. */
|
|
$users = $this->loadModel('user')->getPairs();
|
|
$customer = $this->loadModel('customer')->getById($action->customer);
|
|
$contact = $this->loadModel('contact', 'crm')->getById($nextContact);
|
|
$toList = $this->post->contactedBy;
|
|
$subject = $this->lang->action->record->next . '# ' . $nextDate;
|
|
if($customer) $subject .= ' ' . $customer->name;
|
|
if($contact) $subject .= ' ' . $contact->realname;
|
|
|
|
/* send notice if user is online and return failed accounts. */
|
|
$toList = $this->loadModel('action')->sendNotice($actionID, $toList);
|
|
|
|
if(!$toList) return true;
|
|
|
|
$table = $this->config->action->datingTables[$action->objectType];
|
|
$object = $this->dao->select('*')->from($table)->where('id')->eq($action->objectID)->fetch();
|
|
$module = $action->objectType;
|
|
if($action->objectType == 'customer') $module = $object->relation == 'provider' ? 'provider' : 'customer';
|
|
if($action->objectType == 'contact') $module = $object->status == 'normal' ? 'contact' : 'leads';
|
|
$viewUrl = commonModel::getSysURL() . helper::createLink("crm.{$module}", 'view', "id={$object->id}");
|
|
|
|
/* Create the email content. */
|
|
$this->view->action = $action;
|
|
$this->view->users = $users;
|
|
$this->view->mailTitle = $subject;
|
|
$this->view->nextDate = $nextDate;
|
|
$this->view->customer = $customer;
|
|
$this->view->contact = $contact;
|
|
$this->view->viewUrl = $viewUrl;
|
|
|
|
$mailContent = $this->parse($this->moduleName, 'sendmail');
|
|
|
|
/* Send emails. */
|
|
$this->loadModel('mail')->send($toList, $subject, $mailContent);
|
|
if($this->mail->isError()) trigger_error(join("\n", $this->mail->getError()));
|
|
}
|
|
|
|
/**
|
|
* Trash
|
|
*
|
|
* @param string $type all|hidden
|
|
* @param string $orderBy
|
|
* @param int $recTotal
|
|
* @param int $recPerPage
|
|
* @param int $pageID
|
|
* @access public
|
|
* @return void
|
|
*/
|
|
public function trash($type = 'all', $orderBy = 'id_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1)
|
|
{
|
|
$this->lang->menuGroups->action = 'system';
|
|
$this->lang->action->menu = $this->lang->system->menu;
|
|
$this->lang->action->menuOrder = $this->lang->system->menuOrder;
|
|
|
|
/* Save session. */
|
|
$uri = $this->app->getURI(true);
|
|
$this->session->set('projectList', $uri);
|
|
$this->session->set('taskList', $uri);
|
|
$this->session->set('docList', $uri);
|
|
|
|
/* Get deleted objects. */
|
|
$this->app->loadClass('pager', $static = true);
|
|
$pager = pager::init($recTotal, $recPerPage, $pageID);
|
|
|
|
$trashes = $this->action->getTrashes($type, $orderBy, $pager);
|
|
|
|
/* Title and position. */
|
|
$this->view->title = $this->lang->action->trash;
|
|
$this->view->trashes = $trashes;
|
|
$this->view->type = $type;
|
|
$this->view->orderBy = $orderBy;
|
|
$this->view->pager = $pager;
|
|
$this->view->users = $this->loadModel('user')->getPairs();
|
|
$this->display();
|
|
}
|
|
|
|
/**
|
|
* Hide an deleted object.
|
|
*
|
|
* @param int $actionID
|
|
* @access public
|
|
* @return void
|
|
*/
|
|
public function hideOne($actionID)
|
|
{
|
|
$this->action->hideOne($actionID);
|
|
$this->send(array('result' => 'success', 'locate' => inlink('trash')));
|
|
}
|
|
|
|
/**
|
|
* Hide all deleted objects.
|
|
*
|
|
* @param string $confirm
|
|
* @access public
|
|
* @return void
|
|
*/
|
|
public function hideAll($confirm = 'no')
|
|
{
|
|
$this->action->hideAll();
|
|
$this->send(array('result' => 'success', 'locate' => inlink('trash', "type=hidden")));
|
|
}
|
|
|
|
/**
|
|
* Undelete an object.
|
|
*
|
|
* @param int $actionID
|
|
* @access public
|
|
* @return void
|
|
*/
|
|
public function undelete($actionID)
|
|
{
|
|
$this->action->undelete($actionID);
|
|
$this->send(array('result' => 'success', 'locate' => $this->server->http_referer));
|
|
}
|
|
|
|
/**
|
|
* read a notice.
|
|
*
|
|
* @param int $actionID
|
|
* @param string $type
|
|
* @access public
|
|
* @return void
|
|
*/
|
|
public function read($actionID, $type = 'action')
|
|
{
|
|
$this->action->read($actionID, $type);
|
|
die('success');
|
|
}
|
|
}
|