]> git.mxchange.org Git - city.git/blob - application/city/classes/manager/city_entities/sections/class_CitySectionsManager.php
Next wave:
[city.git] / application / city / classes / manager / city_entities / sections / class_CitySectionsManager.php
1 <?php
2 // Own namespace
3 namespace Org\Mxchange\City\Manager\Sections;
4
5 // Import framework stuff
6 use Org\Mxchange\CoreFramework\Object\BaseFrameworkSystem;
7
8 /**
9  * A city sections manager
10  *
11  * @author              Roland Haeder <webmaster@ship-simu.org>
12  * @version             0.0.0
13  * @copyright   Copyright (c) 2015, 2016 City Developer Team
14  * @license             GNU GPL 3.0 or any newer version
15  * @link                http://www.ship-simu.org
16  *
17  * This program is free software: you can redistribute it and/or modify
18  * it under the terms of the GNU General Public License as published by
19  * the Free Software Foundation, either version 3 of the License, or
20  * (at your option) any later version.
21  *
22  * This program is distributed in the hope that it will be useful,
23  * but WITHOUT ANY WARRANTY; without even the implied warranty of
24  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
25  * GNU General Public License for more details.
26  *
27  * You should have received a copy of the GNU General Public License
28  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
29  */
30 class CitySectionsManager extends BaseFrameworkSystem implements ManageableCitySections, Registerable {
31         /**
32          * Protected constructor
33          *
34          * @return      void
35          */
36         protected function __construct () {
37                 // Call parent constructor
38                 parent::__construct(__CLASS__);
39         }
40
41         /**
42          * Creates an instance of this class
43          *
44          * @return      $managerInstance        An instance of a ManageableCitySections class
45          */
46         public final static function createCitySectionsManager () {
47                 // Get new instance
48                 $managerInstance = new CitySectionsManager();
49
50                 // Get database wrapper
51                 $wrapperInstance = DatabaseWrapperFactory::createWrapperByConfiguredName('city_sections_db_wrapper_class');
52
53                 // And set it here
54                 $managerInstance->setWrapperInstance($wrapperInstance);
55
56                 // Return the prepared instance
57                 return $managerInstance;
58         }
59
60         /**
61          * Checks whether at least one map requires expansion
62          *
63          * @return      $requiresExpansion      Whether a map requires expansion
64          * @todo        0% done
65          */
66         public function isMapPendingExpansion () {
67                 // Default is no expansion is needed
68                 $requireExpansion = FALSE;
69
70                 // First, a simple check if the sections table contains any entries at all
71                 if ($this->getWrapperInstance()->countTotalRows() == 0) {
72                         // This definedly requires expansion
73                         $requireExpansion = TRUE;
74                 } // END - if
75
76                 // Return status
77                 return $requireExpansion;
78         }
79
80         /**
81          * Expands any map that requires expansion
82          *
83          * @return      void
84          * @todo ~10% done
85          * @todo z-coordinate not used
86          */
87         public function expandMaps () {
88                 // Get a city info wrapper instance
89                 $cityWrapperInstance = DatabaseWrapperFactory::createWrapperByConfiguredName('city_info_db_wrapper_class');
90
91                 // Get all city ids from it
92                 $cityIds = $cityWrapperInstance->getAllCityIds();
93
94                 // Now check all ids
95                 foreach ($cityIds as $cityId) {
96                         // Does this id have any sections
97                         if (!$this->getWrapperInstance()->ifCityHasSections($cityId)) {
98                                 // Nothing found, so it is a brand-new city that needs first initialization
99                                 $sections = $this->getWrapperInstance()->doInitialCityExpansion($cityId);
100                         } else {
101                                 // @TODO Maybe some expansion is needed
102                         }
103                 } // END - foreach
104         }
105 }