ProjectAction.class.php (2575B)
1 <?php 2 3 namespace cms\action; 4 5 use cms\base\Configuration; 6 use cms\model\Permission; 7 use cms\model\Folder; 8 use cms\model\Project; 9 use language\Messages; 10 use util\exception\SecurityException; 11 12 // OpenRat Content Management System 13 // Copyright (C) 2002-2012 Jan Dankert, cms@jandankert.de 14 // 15 // This program is free software; you can redistribute it and/or 16 // modify it under the terms of the GNU General Public License 17 // as published by the Free Software Foundation; either version 2 18 // of the License, or (at your option) any later version. 19 // 20 // This program is distributed in the hope that it will be useful, 21 // but WITHOUT ANY WARRANTY; without even the implied warranty of 22 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 23 // GNU General Public License for more details. 24 // 25 // You should have received a copy of the GNU General Public License 26 // along with this program; if not, write to the Free Software 27 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 28 29 30 /** 31 * Action-Klasse zum Bearbeiten eines Projektes 32 * @author $Author$ 33 * @version $Revision$ 34 * @package openrat.actions 35 */ 36 class ProjectAction extends BaseAction 37 { 38 /** 39 * @var Project 40 */ 41 protected $project; 42 43 44 function __construct() 45 { 46 parent::__construct(); 47 } 48 49 50 public function init() 51 { 52 $this->project = new Project( $this->request->getId() ); 53 $this->project->load(); 54 55 if ( ! $this->userMayReadProject() ) { 56 throw new SecurityException(); 57 } 58 } 59 60 61 /** 62 * Stellt fest, ob der angemeldete Benutzer Projekt-Admin ist. 63 * Dies ist der Fall, wenn der Benutzer PROP-Rechte im Root-Folder hat. 64 * @return bool|int 65 */ 66 protected function userIsProjectAdmin() { 67 68 $rootFolder = new Folder( $this->project->getRootObjectId() ); 69 70 return $rootFolder->hasRight(Permission::ACL_PROP); 71 } 72 73 74 /** 75 * Stellt fest, ob der angemeldete Benutzer Projekt-Admin ist. 76 * Dies ist der Fall, wenn der Benutzer PROP-Rechte im Root-Folder hat. 77 * @return bool|int 78 */ 79 protected function userMayReadProject() { 80 81 $rootFolder = new Folder( $this->project->getRootObjectId() ); 82 83 return $rootFolder->hasRight(Permission::ACL_READ); 84 } 85 86 87 88 /** 89 * Make a linkable hostname 90 * 91 * @param $hostname 92 * @return string 93 */ 94 protected function makeAbsoluteHostnameLink( $hostname ) { 95 if ( strpos($hostname,'//') === false ) 96 return 'http://'.$hostname; 97 return $hostname; 98 } 99 100 101 102 /** 103 * User must be an administrator. 104 */ 105 public function checkAccess() { 106 if ( ! $this->userIsAdmin() ) 107 throw new SecurityException(); 108 } 109 110 }