przewiń do treści

Zend Framework od podstaw

Włodzimierz Gajda

<?php
require_once 'Zend/Tool/Project/Provider/Abstract.php';
require_once 'Zend/Tool/Project/Provider/Exception.php';

class DaneProvider extends Zend_Tool_Project_Provider_Abstract
{

  public function wstaw()
  {
    defined('APPLICATION_PATH')
      || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));

    defined('APPLICATION_ENV')
      || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ?
          etenv('APPLICATION_ENV') : 'development'));

    set_include_path(implode(PATH_SEPARATOR, array(
      realpath(APPLICATION_PATH . '/../library'),
      get_include_path(),
    )));

    require_once 'Zend/Application.php';
    $application = new Zend_Application(
      APPLICATION_ENV,
      APPLICATION_PATH . '/configs/application.ini'
    );
    $application->bootstrap('db');

    $Zawodnik = new Application_Model_DbTable_Zawodnik();
    $Panstwo = new Application_Model_DbTable_Panstwo();
    $Turniej = new Application_Model_DbTable_Turniej();

    $Zawodnik->delete('');
    $Panstwo->delete('');
    $Turniej->delete('');

    $tcs = simplexml_load_file('data/tcs.xml');
    foreach ($tcs->turniej as $turniej) {
      $dane = (array)$turniej;
      $turniej_id = $Turniej->createRow($dane)->save();
      foreach ($turniej->miejsce as $miejsce) {
        $dane_panstwa = array(
          'nazwa'  => $miejsce->sportowiec->panstwo
        );
        $panstwo_id = $Panstwo->insertIfNotExists($dane_panstwa);
        $dane_zawodnika = array(
          'imie'     =>  $miejsce->sportowiec->imie,
          'nazwisko' => $miejsce->sportowiec->nazwisko,
          'panstwo_id' => $panstwo_id,
        );
        $zawodnik_id = $Zawodnik->insertIfNotExists($dane_zawodnika);
        $TurniejHasZawodnik = new Application_Model_DbTable_TurniejHasZawodnik();
        $dane = array(
          'turniej_id'  => $turniej_id,
          'zawodnik_id' => $zawodnik_id,
          'miejsce'     => $miejsce->numer
        );
        $TurniejHasZawodnik->createRow($dane)->save();
      }
    }
  }
}

Listing 25.1. Plik providers/DaneProvider.php

Rozdział 25. Publikowanie aplikacji wykorzystującej bazę danych na serwerze hostingowym

listing-25-01.txt