Community
    • Categories
    • Recent
    • Popular
    • Users
    • Search
    • Register
    • Login

    Objekt-Erstellungs-API

    Scheduled Pinned Locked Moved Entwicklung
    14 Posts 2 Posters 3.1k Views 1 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • D Offline
      diplomant_08
      last edited by

      Schon mal vielen Dank diese Handler würden mir die Arbeit wirklich erleichtern.

      Aber in welcher Variable der /src/config.inc.php muss ich denn den Handler registrieren weil

      "idoit_api" => 
      				array(
      					"class" =>	"isys_handler_idoit_api"),
      

      ist ja der Inhalt eines Arrays und kann da nicht eigenständig drin stehen.

      1 Reply Last reply Reply Quote 0
      • D Offline
        diplomant_08
        last edited by

        So es muss NICHT in die /src/config.inc.php
        sondern in die
        =>/src/config_template.inc.php<=

        1 Reply Last reply Reply Quote 0
        • dsD Offline
          ds
          last edited by

          Die config_template.inc.php wird vom Setup verarbeitet. Daraus wird dann die config.inc.php erstellt. Wenn du dieses Array in deiner config.inc.php nicht drin hast, solltest du es dir aus dem template kopieren, sonst erkennt i-doit die variablen nicht.

          1 Reply Last reply Reply Quote 0
          • D Offline
            diplomant_08
            last edited by

            Jo jetzt gehts.WUNDERBAR

            Muss ich die (hoffentlich nur 2 global/obj) StatusID's noch manuell auf 2/sichtbar setzen oder gibts da auch noch eine Methode für.

            Btw. Ich habe i-doit heute nochmal komplett neu auf gesetzt(über den Wizard) und die $g_controller-Variable war wieder nicht in der config_inc.php.
            Ich weis ja nicht ob die standardäßig dort drin stehen sollte oder nicht.

            Aber wenn ja wäre das hiermit eine BugMeldung.

            1 Reply Last reply Reply Quote 0
            • D Offline
              diplomant_08
              last edited by

              So ich hab noch eine Frage zur DB.

              Was bedeuten die Felder:
              isys_catg_location_list__lft isys_catg_location_list__rgt

              man kann sich ja etwas denken wie:

              Dieses Objekt hat zur Wurzel hin diesen Nachbarn in der Hierarchi.
              und zum endgerät hin diesen.

              Aber welcher wäre dann Links welcher Rechts und auf welche ID bezieht es sich.

              Schon mal Danke

              1 Reply Last reply Reply Quote 0
              • D Offline
                diplomant_08
                last edited by

                das mit dem lft und rgt hab ich jetzt auch rausgefunden.

                lft und rgt symbolisieren die linke und rechte "klammer" welche ein Obj abgrenzt.
                Wenn ein Obj direkt root zugewiesen ist dann steht da zum beispiel
                lft:8 rgt:9

                Ein Container-obj mit Childs schließt alle darunterliegenden Obj mit ein.
                z.B. lft:10 rgt:15
                die Childs dazwischen haben dann.
                lft:  rgt:
                11  12
                13  14.

                1 Reply Last reply Reply Quote 0
                • D Offline
                  diplomant_08
                  last edited by

                  Jetzt wieder zu einem Problem:

                  wenn ich den controller.php?load=handler&…
                  ,von meinem Browser aus, aufrufe funktioniert es.

                  wenn ich das ganze von einem PHP-Script(Http-Request) aus mache,
                  um die neue Obj-ID auslesen zu können. dann kommt folgender Fehler:

                  \fehler anfang
                  Fatal error: Argument 1 passed to isys_cmdb_dao::__construct() must not be null, called in /idoit/src/handler/isys_handler_create_obj.class.php on line 39 and defined in /idoit/src/classes/cmdb/dao/isys_cmdb_dao.class.php on line 2237
                  \fehler ende

                  line 39:
                  $l_dao = new isys_cmdb_dao($g_comp_database);

                  Das gleiche passiert aber auch wenn ich das ganze über die Console mache mit:
                  php controller.php -v -m create_obj

                  Ich habe beim dem Aufruf über den Http-Request auch alle nötigen Session inhalte in diese geschrieben, und selbst wenn ich auch noch ein Cookie mit übergeben hab, geht es nicht.

                  Wenn $g_comp_database fehlt. Heist das ja das die ganze i-doit Klassenstruktur nicht läuft.

                  Woran könnte das liegen?

                  Schon mal Danke

                  1 Reply Last reply Reply Quote 0
                  • dsD Offline
                    ds
                    last edited by

                    Hi,
                    das mit den locations hast du schonmal gut hinbekommen 🙂

                    Es sieht so aus als hättest du dir die g_comp_database nicht aus dem globalscope gezogen. Hast du "global $g_comp_database" vor deiner Anweisung stehen?

                    Ansonsten vielleicht ein login Problem? Kommt irgend ein output von dem controller auf der console?

                    1 Reply Last reply Reply Quote 0
                    • dsD Offline
                      ds
                      last edited by

                      Du kannst dir fuer den login übrigens auch eine config anlegen, so dass er sich für zB cronjobs oder aus anderen tools heraus automatisch einloggt:

                      src/handler/config/isys_handler_create_obj.inc.php

                      
                       /**
                       * i-doit
                       *
                       * @package i-doit
                       * @subpackage General
                       * @author Dennis Stücken <dstuecken@i-doit.de>* @version 0.9
                       * @copyright Copyright 2004, 2005 - synetics GmbH
                       * @license http://dev.perl.org/perl6/rfc/346.html Artistic License 2.0
                       */
                      
                       define("C__HANDLER__CREATE_OBJ", 1);
                      
                       /**
                        * Automated login configuration
                        */
                       $g_userconf = array(
                              "user"                  => "admin",
                              "pass"                  => "admin",
                              "mandator_id"   => 1
                       );
                      
                      ?></dstuecken@i-doit.de> 
                      
                      1 Reply Last reply Reply Quote 0
                      • D Offline
                        diplomant_08
                        last edited by

                        Die Console schmeisst sich genau den selben Fehler:

                        PHP Fatal error:  Argument 1 passed to isys_cmdb_dao::__construct() must not be null, called in /idoit/src/handler/isys_handler_create_obj.class.php on line 11 and defined in /idoit/src/classes/cmdb/dao/isys_cmdb_dao.class.php on line 2237

                        09  global $g_comp_database;
                        10
                        11  $l_dao = new isys_cmdb_dao($g_comp_database);

                        Die Login Datei hab ich auch schon angelegt diese ändert aber auch nichts.

                        ich nehme mal an das mit  "mandator_id" , die Systendatenbank-ID gemeint ist und nicht die oben definierte "1"

                        Kann man dem Script über die Konsole auch Parameter mitgeben, trotzdem es zuerst über den Controller läuft.
                        Sonst wäre das für mich eh unbrauchbar da man ja verscheidene Objekte-Typen anlegen will.

                        1 Reply Last reply Reply Quote 0
                        • dsD Offline
                          ds
                          last edited by

                          Die mandator_id ist die ID deines Mandanten, in dem du das Objekt anlegen willst. Die id findest du in der Tabelle isys_mandator (isys_mandator__id) in der System Datenbank.
                          Da du ein Problem mit der g_comp_database (Mandaten-Datenbank) hast, nehme ich an, dass du keinen Mandanten mit der id 1 hast und er die DB-Komponente deshalb nicht instantiieren kann

                          1 Reply Last reply Reply Quote 0
                          • dsD Offline
                            ds
                            last edited by

                            Falls du dir den Lokations algorithmus übrigens noch einmal genauer anschauen möchtest, kannst du das ganze hier nachlesen: http://www.sitepoint.com/article/hierarchical-data-database/2
                            Wir verwenden den "Modified Preorder Tree Traversal Algorithmus"

                            1 Reply Last reply Reply Quote 0
                            • First post
                              Last post