Overview

Namespaces

  • Mapbender
    • Component
      • HTTP
    • CoreBundle
      • Command
      • Component
        • Exception
      • Controller
      • DataFixtures
        • ORM
      • DependencyInjection
      • Element
        • Type
      • Entity
      • EventListener
      • Extension
      • Form
        • DataTransformer
        • EventListener
        • Type
      • Security
      • Template
    • KmlBundle
      • Element
    • ManagerBundle
      • Controller
      • Form
        • DataTransformer
        • Type
    • MonitoringBundle
      • Command
      • Component
      • Controller
      • DependencyInjection
      • Entity
      • EventListener
      • Form
    • PrintBundle
      • Component
      • Controller
    • WmcBundle
      • Component
        • Exception
      • Element
        • Type
      • Entity
      • Form
        • Type
    • WmsBundle
      • Component
        • Exception
      • Controller
      • DependencyInjection
      • Element
        • Type
      • Entity
      • Event
      • Form
        • EventListener
        • Type
    • WmtsBundle
      • Component
        • Exception
      • Controller
      • Entity
      • Form
        • Type
  • None
  • PHP

Classes

  • WmcEditor
  • WmcStorage
  • Overview
  • Namespace
  • Class
  • Tree
  • Deprecated
  • Todo
  • Download
  1: <?php
  2: 
  3: namespace Mapbender\WmcBundle\Element;
  4: 
  5: use Mapbender\CoreBundle\Component\Element;
  6: use Mapbender\CoreBundle\Entity\State;
  7: use Mapbender\WmsBundle\Component\LegendUrl;
  8: use Mapbender\WmsBundle\Component\OnlineResource;
  9: use Mapbender\WmcBundle\Entity\Wmc;
 10: use Mapbender\WmcBundle\Form\Type\WmcType;
 11: //use Mapbender\CoreBundle\Component\ElementInterface;
 12: //use Mapbender\WmcBundle\Component\WmcParser;
 13: //use Symfony\Component\DependencyInjection\ContainerInterface;
 14: use Symfony\Component\HttpFoundation\Response;
 15: 
 16: //use Symfony\Component\Serializer\Serializer;
 17: //use Symfony\Component\Serializer\Normalizer\GetSetMethodNormalizer;
 18: //use Symfony\Component\Serializer\Encoder\JsonEncoder;
 19: 
 20: class WmcEditor extends Element
 21: {
 22: //    /**
 23: //     * @inheritdoc
 24: //     */
 25: //    public function __construct($application, $container, $entity)
 26: //    {
 27: //
 28: //    }
 29: 
 30:     /**
 31:      * @inheritdoc
 32:      */
 33:     static public function getClassTitle()
 34:     {
 35:         return "WmcEditor";
 36:     }
 37: 
 38:     /**
 39:      * @inheritdoc
 40:      */
 41:     static public function getClassDescription()
 42:     {
 43:         return "WMC Editor";
 44:     }
 45: 
 46:     /**
 47:      * @inheritdoc
 48:      */
 49:     static public function getClassTags()
 50:     {
 51:         return array("wmc", "editor");
 52:     }
 53: 
 54:     /**
 55:      * @inheritdoc
 56:      */
 57:     public static function getDefaultConfiguration()
 58:     {
 59:         return array(
 60:             "tooltip" => null,
 61:             "target" => null,
 62: //            "geoportalurl" => null
 63:         );
 64:     }
 65: 
 66:     /**
 67:      * @inheritdoc
 68:      */
 69:     public static function getType()
 70:     {
 71:         return 'Mapbender\WmcBundle\Element\Type\WmcEditorAdminType';
 72:     }
 73: 
 74:     /**
 75:      * @inheritdoc
 76:      */
 77:     public function getWidgetName()
 78:     {
 79:         return 'mapbender.mbWmcEditor';
 80:     }
 81: 
 82:     /**
 83:      * @inheritdoc
 84:      */
 85:     public function getAssets()
 86:     {
 87:         return array(
 88:             'js' => array(
 89:                 'jquery.form.js',
 90:                 'mapbender.element.wmceditor.js'
 91:             ),
 92:             'css' => array('mapbender.element.wmceditor.css')
 93:         );
 94:     }
 95: 
 96:     /**
 97:      * @inheritdoc
 98:      */
 99:     public function getConfiguration()
100:     {
101: //        $configuration = parent::getConfiguration();
102: //        $opts = $configuration;
103: //        $opts['text'] = $this->getTitle();
104: //        $opts['ll'] = $this->lebenslagen_leistungen;
105: //        $opts['init'] = 'mbWmcEditor';
106: //        $opts['selectedgroup'] = array();
107: //        return $opts;
108:         return parent::getConfiguration();
109:     }
110: 
111:     /**
112:      * @inheritdoc
113:      */
114:     public function render()
115:     {
116:         $wmc = Wmc::create();
117:         $form = $this->container->get("form.factory")->create(new WmcType(),
118:                                                               $wmc);
119:         $html = $this->container->get('templating')
120:                 ->render('MapbenderWmcBundle:Element:wmceditor.html.twig',
121:                          array(
122:             'id' => $this->getId(),
123:             'configuration' => $this->getConfiguration(),
124:             'title' => $this->getTitle(),
125:             'form' => $form->createView(),
126:                 ));
127:         return $html;
128:     }
129: 
130:     public function httpAction($action)
131:     {
132:         $session = $this->container->get("session");
133: 
134:         if($session->get("proxyAllowed", false) !== true)
135:         {
136:             throw new AccessDeniedHttpException('You are not allowed to use this proxy without a session.');
137:         }
138:         switch($action)
139:         {
140:             case 'save':
141:                 return $this->save();
142:                 break;
143:             case 'delete':
144:                 $wmcid = $this->container->get("request")->get("wmcid", null);
145:                 $this->container->get("request")->attributes->remove("wmcid");
146:                 return $this->delete($wmcid);
147:                 break;
148:             case 'update':
149:                 $tkid = $this->get("request")->get("tkid", null);
150:                 $this->get("request")->attributes->remove("tkid");
151:                 return $this->save($tkid);
152:                 break;
153:             case 'get':
154:                 $tkid = $this->get("request")->get("tkid", null);
155:                 return $this->getWmc($tkid);
156:                 break;
157:             case 'index':
158:                 return $this->index();
159:                 break;
160:             default:
161:                 throw new NotFoundHttpException('No such action');
162:         }
163:     }
164: 
165:     protected function getWmc($id)
166:     {
167:         $wmc = $this->container->get('doctrine')
168:                 ->getRepository('Mapbender\WmcBundle\Entity\Wmc')
169:                 ->find($id);
170:         $form = $this->getForm($wmc);
171:         $responseBody = $this->container
172:                 ->get('templating')
173:                 ->render("MapbenderWmcBundle:Wmc:edit.html.twig",
174:                          array(
175:             "edit_form" => $form->createView(),
176:             "entity" => $wmc));
177:         $response = new Response();
178:         $response->setContent($responseBody);
179:         return $response;
180:     }
181: 
182:     protected function index()
183:     {
184:         $response = new Response();
185:         $entities = $this->container
186:                 ->get('doctrine')
187:                 ->getRepository('Mapbender\WmcBundle\Entity\Wmc')
188:                 ->findAll();
189:         $responseBody = $this->container
190:                 ->get('templating')
191:                 ->render('MapbenderWmcBundle:Wmc:index.html.twig',
192:                          array("entities" => $entities)
193:         );
194: 
195:         $response->setContent($responseBody);
196:         return $response;
197:     }
198: 
199:     private function save($id = null)
200:     {
201:         $response = new Response();
202:         $request = $this->container->get('request');
203: 
204:         if($id)
205:         {
206:             $wmc = $this->container->get('doctrine')
207:                     ->getRepository('Mapbender\WmcBundle\Entity\Wmc')
208:                     ->find($id);
209:         } else
210:         {
211:             $wmc = Wmc::create();
212:         }
213:         $form = $this->container->get("form.factory")->create(new WmcType(),
214:                                                               $wmc);
215:         if($request->getMethod() === 'POST')
216:         {
217:             $form->bindRequest($request);
218:             if($form->isValid())
219:             { //TODO: Is file an image (jpg/png/gif?)
220:                 $em = $this->container->get('doctrine')->getEntityManager();
221:                 $em->getConnection()->beginTransaction();
222:                 $em->persist($wmc);
223:                 $em->flush();
224:                 if($wmc->getScreenshotPath() === null)
225:                 {
226:                     if($wmc->getScreenshot() !== null)
227:                     {
228:                         $upload_directory = $this->createWmcDirs();
229:                         if($upload_directory !== null)
230:                         {
231:                             $dirs = $this->container->getParameter("directories");
232:                             $filename = sprintf('screenshot-%d.%s',
233:                                                 $wmc->getId(),
234:                                                 $wmc->getScreenshot()->guessExtension());
235:                             $wmc->getScreenshot()->move($upload_directory,
236:                                                         $filename);
237:                             $wmc->setScreenshotPath($filename);
238:                             $format = $wmc->getScreenshot()->getClientMimeType();
239:                             $url_base = $request->getScheme() . '://' . $request->getHttpHost() . $request->getBasePath();
240:                             $serverurl = $url_base . "/" . $dirs["wmc"];
241:                             $logourl = $serverurl . "/" . $this->application->getSlug() . "/" . $filename;
242:                             $logoUrl = LegendUrl::create(null, null,
243:                                                          OnlineResource::create($format,
244:                                                                                 $logourl));
245:                             $state = $wmc->getState();
246:                             $state->setServerurl($serverurl);
247:                             $state->setSlug($this->application->getSlug());
248:                             $wmc->setLogourl($logoUrl);
249:                         }
250:                     } else
251:                     {
252:                         $wmc->setScreenshotPath(null);
253:                     }
254:                     $em->persist($wmc);
255:                     $em->flush();
256:                 }
257: 
258: //                $patern = array('/"?minScale"?:\s?null\s?,?/', '/"?maxScale"?:\s?null\s?,?/');
259: //                $rplmt = array("", "");
260: //                $services = preg_replace($patern, $rplmt,
261: //                                         $wmc->getServices());
262: //                $wmc->setServices($services);
263: //
264: //                $em->persist($wmc);
265: //                $em->flush();
266: //
267: //                $path = $this->getParameter("themenkartenwmc_directory");
268: //                $path .= "/themenkarte_" . $wmc->getId() . "wmc.xml";
269: //                file_put_contents($path, $wmc->getWmc() ? : "");
270:                 $em->getConnection()->commit();
271:                 $response->setContent($wmc->getId());
272:             } else
273:             {
274:                 $response->setContent('error');
275:             }
276:         }
277:         return $response;
278:     }
279: 
280:     private function delete($id)
281:     {
282:         $response = new Response();
283:         $wmc = $this->container->get('doctrine')
284:                 ->getRepository('Mapbender\WmcBundle\Entity\Wmc')
285:                 ->find($id);
286:         if($wmc !== null)
287:         {
288:             $response->setContent($wmc->getId());
289:             $em = $this->container->get('doctrine')->getEntityManager();
290:             $em->remove($wmc);
291:             $em->flush();
292:         } else
293:         {
294:             $response->setContent('error');
295:         }
296:         return $response;
297:     }
298: 
299:     public function generateMetadata($themenkarte)
300:     {
301:         return $this->get('templating')->render('BkgGeoportalBundle:Element:themenkarteneditor_wmcmetadata.html.twig',
302:                                                 array("themenkarte" => $themenkarte)
303:         );
304:     }
305: 
306:     protected function createWmcDirs()
307:     {
308:         $basedir = $this->container->get('kernel')->getRootDir() . '/../web/';
309:         $dirs = $this->container->getParameter("directories");
310:         $dir = $basedir . $dirs["wmc"] . "/" . $this->application->getSlug();
311:         if(!is_dir($dir))
312:         {
313:             $a = mkdir($dir);
314:             if($a)
315:             {
316:                 return $dir;
317:             } else
318:             {
319:                 return null;
320:             }
321:         } else
322:         {
323:             return $dir;
324:         }
325:     }
326: 
327: }
328: 
329: 
Mapbender3 API documenation API documentation generated by ApiGen 2.8.0