332 Zeilen
		
	
	
		
			Kein EOL
		
	
	
		
			12 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			332 Zeilen
		
	
	
		
			Kein EOL
		
	
	
		
			12 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| /**
 | |
|  * Project: 
 | |
|  * Contenido Content Management System
 | |
|  * 
 | |
|  * Description: 
 | |
|  *  Workflow allocation class
 | |
|  * 
 | |
|  * Requirements: 
 | |
|  * @con_php_req 5.0
 | |
|  * 
 | |
|  *
 | |
|  * @package    Contenido Backend classes
 | |
|  * @version    1.4
 | |
|  * @author     Timo Hummel
 | |
|  * @copyright  four for business AG <www.4fb.de>
 | |
|  * @license    http://www.contenido.org/license/LIZENZ.txt
 | |
|  * @link       http://www.4fb.de
 | |
|  * @link       http://www.contenido.org
 | |
|  * 
 | |
|  * {@internal 
 | |
|  *   created 2003-07-18
 | |
|  *   modified : 2008-06-25 - use php mailer class instead of mail()
 | |
|  *   
 | |
|  *   $Id: class.workflowartallocation.php 128 2019-07-03 11:58:28Z oldperl $:
 | |
|  * }}
 | |
|  * 
 | |
|  */
 | |
| if (!defined('CON_FRAMEWORK')) {
 | |
|     die('Illegal call');
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Class WorkflowArtAllocations
 | |
|  * Class for workflow art allocation management
 | |
|  * @author Timo A. Hummel <Timo.Hummel@4fb.de>
 | |
|  * @version 0.2
 | |
|  * @copyright four for business 2003
 | |
|  */
 | |
| class WorkflowArtAllocations extends ItemCollection {
 | |
| 
 | |
|     /**
 | |
|      * Constructor Function
 | |
|      * @param string $table The table to use as information source
 | |
|      */
 | |
|     function __construct() {
 | |
|         global $cfg;
 | |
|         parent::__construct($cfg["tab"]["workflow_art_allocation"], "idartallocation");
 | |
|         $this->_setItemClass("WorkflowArtAllocation");
 | |
|     }
 | |
| 
 | |
|     /** @deprecated  [2011-03-15] Old constructor function for downwards compatibility */
 | |
|     function WorkflowArtAllocations() {
 | |
|         cWarning(__FILE__, __LINE__, "Deprecated method call, use __construct()");
 | |
|         $this->__construct();
 | |
|     }
 | |
| 
 | |
|     function create($idartlang) {
 | |
|         global $cfg;
 | |
| 
 | |
|         $sql = "SELECT idartlang FROM " . $cfg["tab"]["art_lang"] .
 | |
|                 " WHERE idartlang = '" . Contenido_Security::escapeDB($idartlang, $this->db) . "'";
 | |
| 
 | |
|         $this->db->query($sql);
 | |
|         if (!$this->db->next_record()) {
 | |
|             $this->lasterror = i18n("Article doesn't exist", "workflow");
 | |
|             return false;
 | |
|         }
 | |
| 
 | |
|         $this->select("idartlang = '$idartlang'");
 | |
| 
 | |
|         if ($this->next() !== false) {
 | |
|             $this->lasterror = i18n("Article is already assigned to a usersequence step.", "workflow");
 | |
|             return false;
 | |
|         }
 | |
| 
 | |
|         $newitem = parent::createNewItem();
 | |
|         $newitem->setField("idartlang", $idartlang);
 | |
|         $newitem->store();
 | |
| 
 | |
|         return ($newitem);
 | |
|     }
 | |
| 
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Class WorkflowArtAllocation
 | |
|  * Class for a single workflow allocation item
 | |
|  * @author Timo A. Hummel <Timo.Hummel@4fb.de>
 | |
|  * @version 0.1
 | |
|  * @copyright four for business 2003
 | |
|  */
 | |
| class WorkflowArtAllocation extends Item {
 | |
| 
 | |
|     /**
 | |
|      * Constructor Function
 | |
|      * @param string $table The table to use as information source
 | |
|      */
 | |
|     function __construct() {
 | |
|         global $cfg;
 | |
| 
 | |
|         parent::__construct($cfg["tab"]["workflow_art_allocation"], "idartallocation");
 | |
|     }
 | |
| 
 | |
|     /** @deprecated  [2011-03-15] Old constructor function for downwards compatibility */
 | |
|     function WorkflowArtAllocation() {
 | |
|         cWarning(__FILE__, __LINE__, "Deprecated method call, use __construct()");
 | |
|         $this->__construct();
 | |
|     }
 | |
| 
 | |
|     function getWorkflowItem() {
 | |
|         $userSequence = new WorkflowUserSequence;
 | |
|         $userSequence->loadByPrimaryKey($this->values["idusersequence"]);
 | |
| 
 | |
|         return ($userSequence->getWorkflowItem());
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Returns the current item position
 | |
|      * @param string $field Void field since we override the usual setField function
 | |
|      * @param string $value Void field since we override the usual setField function
 | |
|      */
 | |
|     function currentItemPosition() {
 | |
|         $idworkflowitem = $this->get("idworkflowitem");
 | |
| 
 | |
|         $workflowItems = new WorkflowItems;
 | |
|         $workflowItems->select("idworkflowitem = '$idworkflowitem'");
 | |
| 
 | |
|         if ($item = $workflowItems->next()) {
 | |
|             return ($item->get("position"));
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Returns the current user position
 | |
|      * @param string $field Void field since we override the usual setField function
 | |
|      * @param string $value Void field since we override the usual setField function
 | |
|      */
 | |
|     function currentUserPosition() {
 | |
|         return ($this->get("position"));
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Overriden store function to send mails 
 | |
|      * @param none
 | |
|      */
 | |
|     function store() {
 | |
|         global $cfg;
 | |
| 
 | |
|         $sMailhost = getSystemProperty('system', 'mail_host');
 | |
|         if ($sMailhost == '') {
 | |
|             $sMailhost = 'localhost';
 | |
|         }
 | |
| 
 | |
|         //modified : 2008-06-25 - use php mailer class instead of mail()
 | |
|         $oMail = new PHPMailer();
 | |
|         $oMail->Host = $sMailhost;
 | |
|         $oMail->IsHTML(0);
 | |
|         $oMail->WordWrap = 1000;
 | |
|         $oMail->IsMail();
 | |
| 
 | |
|         if (array_key_exists("idusersequence", $this->modifiedValues)) {
 | |
|             $usersequence = new WorkflowUserSequence;
 | |
|             $usersequence->loadByPrimaryKey($this->values["idusersequence"]);
 | |
| 
 | |
|             $email = $usersequence->get("emailnoti");
 | |
|             $escal = $usersequence->get("escalationnoti");
 | |
| 
 | |
|             if ($email == 1 || $escal == 1) {
 | |
|                 /* Grab the required informations */
 | |
|                 $curEditor = getGroupOrUserName($usersequence->get("iduser"));
 | |
|                 $idartlang = $this->get("idartlang");
 | |
|                 $timeunit = $usersequence->get("timeunit");
 | |
|                 $timelimit = $usersequence->get("timelimit");
 | |
| 
 | |
|                 $db = new DB_ConLite;
 | |
|                 $sql = "SELECT author, title, idart FROM " . $cfg["tab"]["art_lang"] . " WHERE idartlang = '" . Contenido_Security::escapeDB($idartlang, $db) . "'";
 | |
| 
 | |
|                 $db->query($sql);
 | |
| 
 | |
|                 if ($db->next_record()) {
 | |
|                     $idart = $db->f("idart");
 | |
|                     $title = $db->f("title");
 | |
|                     $author = $db->f("author");
 | |
|                 }
 | |
| 
 | |
|                 /* Extract category */
 | |
|                 $sql = "SELECT idcat FROM " . $cfg["tab"]["cat_art"] . " WHERE idart = '" . Contenido_Security::escapeDB($idart, $db) . "'";
 | |
|                 $db->query($sql);
 | |
| 
 | |
|                 if ($db->next_record()) {
 | |
|                     $idcat = $db->f("idcat");
 | |
|                 }
 | |
| 
 | |
|                 $sql = "SELECT name FROM " . $cfg["tab"]["cat_lang"] . " WHERE idcat = '" . Contenido_Security::escapeDB($idcat, $db) . "'";
 | |
|                 $db->query($sql);
 | |
| 
 | |
|                 if ($db->next_record()) {
 | |
|                     $catname = $db->f("name");
 | |
|                 }
 | |
| 
 | |
|                 $starttime = $this->get("starttime");
 | |
| 
 | |
| 
 | |
|                 $starttime = strtotime(substr_replace(substr(substr($starttime, 0, 2) . chunk_split(substr($starttime, 2, 6), 2, "-") . chunk_split(substr($starttime, 8), 2, ":"), 0, 19), " ", 10, 1));
 | |
| 
 | |
|                 switch ($timeunit) {
 | |
|                     case "Seconds":
 | |
|                         $maxtime = $starttime + $timelimit;
 | |
|                         break;
 | |
|                     case "Minutes":
 | |
|                         $maxtime = $starttime + ($timelimit * 60);
 | |
|                         break;
 | |
|                     case "Hours":
 | |
|                         $maxtime = $starttime + ($timelimit * 3600);
 | |
|                         break;
 | |
|                     case "Days":
 | |
|                         $maxtime = $starttime + ($timelimit * 86400);
 | |
|                         break;
 | |
|                     case "Weeks":
 | |
|                         $maxtime = $starttime + ($timelimit * 604800);
 | |
|                         break;
 | |
|                     case "Months":
 | |
|                         $maxtime = $starttime + ($timelimit * 2678400);
 | |
|                         break;
 | |
|                     case "Years":
 | |
|                         $maxtime = $starttime + ($timelimit * 31536000);
 | |
|                         break;
 | |
|                     default:
 | |
|                         $maxtime = $starttime + $timelimit;
 | |
|                 }
 | |
| 
 | |
|                 if ($email == 1) {
 | |
|                     $email = "Hello %s,\n\n" .
 | |
|                             "you are assigned as the next editor for the Article %s.\n\n" .
 | |
|                             "More informations:\n" .
 | |
|                             "Article: %s\n" .
 | |
|                             "Category: %s\n" .
 | |
|                             "Editor: %s\n" .
 | |
|                             "Author: %s\n" .
 | |
|                             "Editable from: %s\n" .
 | |
|                             "Editable to: %s\n";
 | |
| 
 | |
|                     $filledMail = sprintf($email,
 | |
|                             $curEditor,
 | |
|                             $title,
 | |
|                             $title,
 | |
|                             $catname,
 | |
|                             $curEditor,
 | |
|                             $author,
 | |
|                             date("Y-m-d H:i:s", $starttime),
 | |
|                             date("Y-m-d H:i:s", $maxtime));
 | |
|                     $user = new User;
 | |
| 
 | |
|                     if (isGroup($usersequence->get("iduser"))) {
 | |
|                         $sql = "select idgroupuser, user_id FROM " . $cfg["tab"]["groupmembers"] . " WHERE
 | |
|             						group_id = '" . Contenido_Security::escapeDB($usersequence->get("iduser"), $db) . "'";
 | |
|                         $db->query($sql);
 | |
| 
 | |
|                         while ($db->next_record()) {
 | |
|                             $user->loadUserByUserID($db->f("user_id"));
 | |
|                             //modified : 2008-06-25 - use php mailer class instead of mail()
 | |
|                             $oMail->AddAddress($user->getField("email"), "");
 | |
|                             $oMail->Subject = stripslashes(i18n('Workflow notification'));
 | |
|                             $oMail->Body = $filledMail;
 | |
|                             $oMail->Send();
 | |
|                         }
 | |
|                     } else {
 | |
|                         $user->loadUserByUserID($usersequence->get("iduser"));
 | |
|                         //modified : 2008-06-25 - use php mailer class instead of mail()
 | |
|                         $oMail->AddAddress($user->getField("email"), "");
 | |
|                         $oMail->Subject = stripslashes(i18n('Workflow notification'));
 | |
|                         $oMail->Body = $filledMail;
 | |
|                         $oMail->Send();
 | |
|                     }
 | |
|                 } else {
 | |
|                     $email = "Hello %s,\n\n" .
 | |
|                             "you are assigned as the escalator for the Article %s.\n\n" .
 | |
|                             "More informations:\n" .
 | |
|                             "Article: %s\n" .
 | |
|                             "Category: %s\n" .
 | |
|                             "Editor: %s\n" .
 | |
|                             "Author: %s\n" .
 | |
|                             "Editable from: %s\n" .
 | |
|                             "Editable to: %s\n";
 | |
| 
 | |
|                     $filledMail = sprintf($email,
 | |
|                             $curEditor,
 | |
|                             $title,
 | |
|                             $title,
 | |
|                             $catname,
 | |
|                             $curEditor,
 | |
|                             $author,
 | |
|                             date("Y-m-d H:i:s", $starttime),
 | |
|                             date("Y-m-d H:i:s", $maxtime));
 | |
| 
 | |
|                     $user = new User;
 | |
| 
 | |
|                     if (isGroup($usersequence->get("iduser"))) {
 | |
| 
 | |
|                         $sql = "select idgroupuser, user_id FROM " . $cfg["tab"]["groupmembers"] . " WHERE
 | |
|             						group_id = '" . Contenido_Security::escapeDB($usersequence->get("iduser"), $db) . "'";
 | |
|                         $db->query($sql);
 | |
| 
 | |
|                         while ($db->next_record()) {
 | |
|                             $user->loadUserByUserID($db->f("user_id"));
 | |
|                             echo "mail to " . $user->getField("email") . "<br>";
 | |
|                             //modified : 2008-06-25 - use php mailer class instead of mail()
 | |
|                             $oMail->AddAddress($user->getField("email"), "");
 | |
|                             $oMail->Subject = stripslashes(i18n('Workflow escalation'));
 | |
|                             $oMail->Body = $filledMail;
 | |
|                             $oMail->Send();
 | |
|                         }
 | |
|                     } else {
 | |
|                         $user->loadUserByUserID($usersequence->get("iduser"));
 | |
|                         echo "mail to " . $user->getField("email") . "<br>";
 | |
|                         //modified : 2008-06-25 - use php mailer class instead of mail()
 | |
|                         $oMail->AddAddress($user->getField("email"), "");
 | |
|                         $oMail->Subject = stripslashes(i18n('Workflow escalation'));
 | |
|                         $oMail->Body = $filledMail;
 | |
|                         $oMail->Send();
 | |
|                     }
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|         return parent::store();
 | |
|     }
 | |
| 
 | |
| }
 | |
| 
 | |
| ?>
 |