За последние 24 часа нас посетили 22256 программистов и 1029 роботов. Сейчас ищут 658 программистов ...

Помогите с Zend_Db_Table условием и датой :(

Тема в разделе "PHP и базы данных", создана пользователем Azura, 11 май 2014.

  1. Azura

    Azura Новичок

    С нами с:
    11 май 2014
    Сообщения:
    22
    Симпатии:
    0
    Добрый день!
    Помогите, пожалуйста, понять в чём дело. =( Работаю с чужим кодом... Решила дописать в игрушке рост питомца (игрушка - онлайн-тамагоч).
    В php абсолютный чайник, поэтому догадаться даже до самых простых вещей иногда очень трудно.(
    Мне нужно извлечь из таблицы mysql дату создания питомца. После этого я пишу условие, в котором в зависимости от кол-ва отсчитанных месяцев отображается нужная картинка, изображающая питомца (новорождённый, ребёнок, подросток и т.д.).
    При загрузке этого кода на сервер картинки просто нет. =( Хотя всё остальное работает...
    Выборка и таблиц бд происходит через класс Zend_Db_Table.

    Помогите, пожалуйста, три дня уже голову ломаю. =( Не могу понять где ошиблась...((((
    п.с.:В игре есть декремент времени по которому идёт отсчёт голода и счастья (unixtime_next_decrement int(10)), но по нему прописать условие я не смогла...
    Код (PHP):
    1. class Pet extends ActiveTable
    2. {
    3.     protected $table_name = 'user_pet';
    4.     protected $primary_key = 'user_pet_id';
    5.     protected $LOOKUPS = array(
    6.         array(
    7.             'local_key' => 'pet_specie_id',
    8.             'foreign_table' => 'pet_specie',
    9.             'foreign_key' => 'pet_specie_id',
    10.             'join_type' => 'inner',
    11.         ),
    12.         array(
    13.             'local_key' => 'pet_specie_color_id',
    14.             'foreign_table' => 'pet_specie_color',
    15.             'foreign_key' => 'pet_specie_color_id',
    16.             'join_type' => 'inner',
    17.         ),
    18.     );
    19.     protected $RELATED = array(
    20.         'user' => array(
    21.             'class' => 'User',
    22.             'local_key' => 'user_id',
    23.             'foreign_key' => 'user_id',
    24.             'one' => true,
    25.         ),
    26.     );
    27.  
    28.        $happybirthday = $this->getCreatedAt();
    29.       function happybirthday($birthdayStr)
    30.         {
    31.         $now = new DateTime();
    32.         $birthday = new DateTime($birthdayStr);
    33.         list($year, $month, $day) = explode('|', $birthday->diff($now)->format('%y|%m|%d'));
    34.             $result = declination($year);
    35.             $result .= declination($month);
    36.             $result .= declination($day);
    37.             return $result;
    38.         }
    39.  
    40.     public function getImageUrl()
    41.     {
    42.         global $APP_CONFIG;
    43.                 if($month > 0 && $month <= 1) return "{$APP_CONFIG['public_dir']}/resources/pets/{$this->getRelativeImageDir()}/{$this->getColorImg()}";
    44.                 elseif($month > 1 && $month <= 2) return "{$APP_CONFIG['public_dir']}/resources/pets/{$this->getRelativeImageDir()}/"."2"."{$this->getColorImg()}";
    45.                 elseif($month > 2 && $month <= 4) return "{$APP_CONFIG['public_dir']}/resources/pets/{$this->getRelativeImageDir()}/"."3"."{$this->getColorImg()}";
    46.                 elseif($month > 4 && $month <= 9) return "{$APP_CONFIG['public_dir']}/resources/pets/{$this->getRelativeImageDir()}/"."4"."{$this->getColorImg()}";
    47.                 elseif($month > 9) return "{$APP_CONFIG['public_dir']}/resources/pets/{$this->getRelativeImageDir()}/"."5"."{$this->getColorImg()}";
    48.                 ;
    49.     }
    А так выглядит БД: ссылка
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    а какой путь получается? и какой должен быть правильный?
     
  3. Azura

    Azura Новичок

    С нами с:
    11 май 2014
    Сообщения:
    22
    Симпатии:
    0
    Спасибо вам большое за ваш пост!
    Путь должен получиться вида:
    основной путь к движку/resources/pets/папка к виду питомца/имя изображения с форматом и пристыкованным числом, которое обозначает возраст (1pet.gif).

    Собственно, вместо моих комментариев там выведены переменные для смарти, т.е. всё это потом передастся в .tpl
    Хотя, ошибки быть не должно в выводе картинки... Потому что как только я убираю условие или прописываю вместо этой переменной другую (переменную декремента), то самое первое стандартное изображение отображается. От декремента я отказалась, потому что так и не поняла в каком виде он выводится и как им вообще пользоваться... А тут у меня чувство, что, то ли я не верно вывела дату создания из бд, то ли скрипт пересчёта косячный, то ли я не правильно оттуда месяцы вытащила... Или в условии намудрила. В общем каша в голове( Ужас. А так хочется скорее это сделать и начать рисовать((((
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    вы так и не ответили. давайте на конкретном примере разберём.
     
  5. Azura

    Azura Новичок

    С нами с:
    11 май 2014
    Сообщения:
    22
    Симпатии:
    0
    Значит я вас не очень поняла( Вы же имели ввиду путь к изображению?
    {$APP_CONFIG['public_dir']}/resources/pets/{$this->getRelativeImageDir()}/{$this->getColorImg()} - должно отображаться так (собственно так и отображается, если убрать условие) - sitename.ru/resources/pets/dog/babydog.gif

    Изначальный абсолютно рабочий скрипт вывода изображения был таким:
    Код (PHP):
    1. public function getImageUrl()
    2.     {
    3.         global $APP_CONFIG;
    4.         
    5.         return "{$APP_CONFIG['public_dir']}/resources/pets/{$this->getRelativeImageDir()}/{$this->getColorImg()}";
    6.     } 
    7.  
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    ну так и покажите, какой получается. вы же сказали, что он неправильный, что картинка не показывается.
    Так какой он получается сейчас и какой должен быть правильным?
     
  7. Azura

    Azura Новичок

    С нами с:
    11 май 2014
    Сообщения:
    22
    Симпатии:
    0
    Простите, что туплю! =)
    Дело в том, что картинка не выводится вообще! Т.е. условие похоже не работает. Если посмотреть исходный код страницы, то кода самого изображения мы не увидим вообще (даже тэгов), пусто. Т.е. условие возвращает ложь и другое условие (оно в другом файле) выводит "Нет картинки". У меня чувство, что сама переменная $month не имеет значения почему-то( А может быть там вместо кол-ва месяцев числовое имя месяца?.... В общем - кошмар))) Как из функции подсчёта грамотно вытащить кол-во месяцев? И нормально ли извлечена дата вообще ($happybirthday = $this->getCreatedAt();)?
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    это понятно =)
    адрес какой у неё при этом?
    Как же вы определили, что это путь неправильный, если вы его даже не видели? Может вы картинку не туда положили или права не выдали.

    Путь картинки смотрите, пишите сюда с комментариями.
     
  9. Azura

    Azura Новичок

    С нами с:
    11 май 2014
    Сообщения:
    22
    Симпатии:
    0
    Я вам выслала в ПМ адрес ссылки и доступ к тестовому аккаунту. Вы просто не так меня поняли - путь-то как раз верный, условие возвращает ложь и поэтому урла картинки НЕТ ВООБЩЕ. Никакого! В другом файле, другое условие принимает ложь этого условия и выводит слово "нет картинки". Х) Да... я сама уже кашу в голове устроила, пытаясь читать этот код....
     
  10. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Код (PHP):
    1. public function getImageUrl()
    2.     {
    3.         global $APP_CONFIG;
    4.                 if($month > 0 && $month <= 1
    откуда берется $month? )
    Раз его нет, то и условие не выполняется.
     
  11. Azura

    Azura Новичок

    С нами с:
    11 май 2014
    Сообщения:
    22
    Симпатии:
    0
    Спасибо!!!!) Значит всё-таки условие... А вы не подскажете, как вытащить эту переменную из функции function happybirthday($birthdayStr)???
    Потому что там ретурном вроде как выводится всё сразу, а когда я беру месяц - как видите скрипт не пашет. :(
     
  12. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    Там написано "Нет картинки". Это не то же самое, что картинки просто нет. =) Видимо он считает, что файла с картинкой нету.

    функция getImageUrl() в удачном случае возвращает путь. дайте тот код, в котором эта функция используется.
     
  13. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Хм... happybirthday($birthdayStr) возвращает уже строку с датой. Как вариант, можно передать в getImageUrl() $birthdayStr и снова там ей распарсить. Лучше конечно вынести в отдельный метод типа такого:
    Код (PHP):
    1. public function getDate($birthdayStr)
    2. {
    3.   $now = new DateTime();
    4.   $birthday = new DateTime($birthdayStr);
    5.   return explode('|', $birthday->diff($now)->format('%y|%m|%d'));
    6. }
    7. //
    8. $date = $this->getDate($birthdayStr);
    9. $month = $data[1];
     
  14. Azura

    Azura Новичок

    С нами с:
    11 май 2014
    Сообщения:
    22
    Симпатии:
    0
    Сейча-а-ас... Вот. :) Смарти)
    Код (PHP):
    1.    
    2. {if $pet.image != null}<img src='{$pet.image}' border='0' alt='{$pet.name}' />{else}Нет картинки{/if}
    3.  
    Так, сейчас попробую... но не факт что смогу, так как я всё делаю по своей логике и по примерам)))))
    Подскажите, что лучше гуглить, чтобы сделать так как вы описали? =)
     
  15. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    А кто ж его этот ваш Zend знает, я им не пользовался ни разу )
    Вообще, смарти тут выступает в качестве шаблона, приведенный вами в первом посте код - модели. Ещё должен быть контроллер который всё это связывает, очевидно Игорь просит его. Где-то в нем и вызывается этот getImageUrl(), там и надо передать $month в метод.
     
  16. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    нужен код, где эта функция упоминается, а не какой-то кусочек шаблона, где нет ни слова про эту функцию =)
     
  17. Azura

    Azura Новичок

    С нами с:
    11 май 2014
    Сообщения:
    22
    Симпатии:
    0
    Извините... ^^
    Похоже вот куда уходят результаты:
    Код (PHP):
    1. $pet_id = stripinput($_REQUEST['pet_id']);
    2.  
    3. $pet = new Pet($db);
    4. $pet = $pet->findOneByUserPetId($pet_id);
    5.  
    6. if($pet == null)
    7. {
    8.     draw_errors('Неверно указано имя питомца');
    9. }
    10. else
    11. {
    12.     $owner = $pet->grabUser();
    13.     
    14.     $PET = array(
    15.         'id' => $pet->getUserPetId(),
    16.         'name' => $pet->getPetName(),
    17.         'owner' => array(
    18.             'id' => $owner->getUserId(),
    19.             'name' => $owner->getUserName(),
    20.         ),
    21.         'specie' => $pet->getSpecieName(),
    22.         'hunger' => $pet->getHungerText(),
    23.         'happiness' => $pet->getHappinessText(),
    24.         'birthdate' => $User->formatDate($pet->getCreatedAt()),
    25.         'profile' => $pet->getProfile(),
    26.         'image' => $pet->getImageUrl(),
    27.     );
    28.     
    29.     $renderer->assign('pet',$PET);
    30.     $renderer->display('pets/profile.tpl');
    31. } // end display pet
    32.  
    Оказывается мой код всё это время имел синтаксическую ошибку, ибо я неверно извлекла дату. Видимо раньше через ФТП он просто не загружался, глючила файлзилла. Х(
    Интерпретатор ругался на эту строку: $happybirthday = $this->getCreatedAt();
    И говорил вот что: syntax error, unexpected T_VARIABLE, expecting T_FUNCTION
    По аналогии я поправила код, попробовала внедрить вариант кода от romach.
    В общем теперь код выглядит так:
    Код (PHP):
    1.       function happybirthday($birthdayStr)
    2.         {
    3.         $happybirthday = $this->getCreatedAt();
    4.         $now = new DateTime();
    5.         $birthday = new DateTime($birthdayStr);
    6.         list($year, $month, $day) = explode('|', $birthday->diff($now)->format('%y|%m|%d'));
    7.             $result = declination($year);
    8.             $result .= declination($month);
    9.             $result .= declination($day);
    10.             return $result;
    11.         }
    12.         
    13. public function getDate($birthdayStr)
    14. {
    15.   $now = new DateTime();
    16.   $birthday = new DateTime($birthdayStr);
    17.   return explode('|', $birthday->diff($now)->format('%y|%m|%d'));
    18. $date = $this->getDate($birthdayStr);
    19.   }
    20. //
    21.  
    22. $month = $data[1];
    23.  
    24.      //////**/////
    25.     public function getImageUrl()
    26.     {
    27.         global $APP_CONFIG;
    28.         if($month > 0 && $month <= 1) return "{$APP_CONFIG['public_dir']}/resources/pets/{$this->getRelativeImageDir()}/{$this->getColorImg()}";
    29.         elseif($month > 1 && $month <= 2) return "{$APP_CONFIG['public_dir']}/resources/pets/{$this->getRelativeImageDir()}/"."2"."{$this->getColorImg()}";
    30.         elseif($month > 2 && $month <= 4) return "{$APP_CONFIG['public_dir']}/resources/pets/{$this->getRelativeImageDir()}/"."3"."{$this->getColorImg()}";
    31.         elseif($month > 4 && $month <= 9) return "{$APP_CONFIG['public_dir']}/resources/pets/{$this->getRelativeImageDir()}/"."4"."{$this->getColorImg()}";
    32.         elseif($month > 9) return "{$APP_CONFIG['public_dir']}/resources/pets/{$this->getRelativeImageDir()}/"."5"."{$this->getColorImg()}";
    33.         ;
    34.     }
    А выдаёт это. xDDDD
    [​IMG]
     
  18. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    var_dump($pet) покажи плс
     
  19. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
  20. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    весь код покажи этого класса
     
  21. Azura

    Azura Новичок

    С нами с:
    11 май 2014
    Сообщения:
    22
    Симпатии:
    0
    Простите, пожалуйста Игорь и Romach, не смогла я найти var_dump($pet) и class Pet extends...
    И я не знаю как timezone изменить. :((((((
    Очень не удобно вас напрягать, просто не к кому обратится. :( А я давно мечтала такую игрушку сделать...
    http://yadi.sk/d/EPnjsq0cPpteX - вот весь дамп БД и файловой системы :( (config.inc.php - содержит данные для коннекта, я их обнулила)

    Я вам что угодно нарисую, помогу в вёрстке - вы и так уже со мной замучились... :( Я почти оканчиваю уже образование на художника, а подрабатываю верстальщиком HTML+CSS и художником, поэтому правда что-то умею...

    п.с.: После того, как переменные ($date и $month) внесла внутрь функции getDate($birthdayStr) - сайт снова стал отображатся... х( да что за блин...
     
  22. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    еще покажи var_dump($pet->getCreatedAt());
     
  23. Azura

    Azura Новичок

    С нами с:
    11 май 2014
    Сообщения:
    22
    Симпатии:
    0
    Ничего больше не нашла кроме двух файлов profile.php и pet.class.php ну и самого шаблона смарти...
    Поэтому полезла в документацию по зенду.... Нашла это:
    :(
    profile.php
    Код (PHP):
    1. <?php
    2.  
    3. $pet_id = stripinput($_REQUEST['pet_id']);
    4.  
    5. $pet = new Pet($db);
    6. $pet = $pet->findOneByUserPetId($pet_id);
    7.  
    8. if($pet == null)
    9. {
    10.     draw_errors('Неверно указано имя питомца');
    11. }
    12. else
    13. {
    14.     $owner = $pet->grabUser();
    15.     
    16.     $PET = array(
    17.         'id' => $pet->getUserPetId(),
    18.         'name' => $pet->getPetName(),
    19.         'owner' => array(
    20.             'id' => $owner->getUserId(),
    21.             'name' => $owner->getUserName(),
    22.         ),
    23.         'specie' => $pet->getSpecieName(),
    24.         'hunger' => $pet->getHungerText(),
    25.         'happiness' => $pet->getHappinessText(),
    26.         'birthdate' => $User->formatDate($pet->getCreatedAt()),
    27.         'profile' => $pet->getProfile(),
    28.         'image' => $pet->getImageUrl(),
    29.     );
    30.     
    31.     $renderer->assign('pet',$PET);
    32.     $renderer->display('pets/profile.tpl');
    33. } // end display pet
    34. ?>
    pet.class.php
    Код (PHP):
    1. <?php
    2. class Pet extends ActiveTable
    3. {
    4.     protected $table_name = 'user_pet';
    5.     protected $primary_key = 'user_pet_id';
    6.     protected $LOOKUPS = array(
    7.         array(
    8.             'local_key' => 'pet_specie_id', 
    9.             'foreign_table' => 'pet_specie',
    10.             'foreign_key' => 'pet_specie_id',
    11.             'join_type' => 'inner',
    12.         ),
    13.         array(
    14.             'local_key' => 'pet_specie_color_id', 
    15.             'foreign_table' => 'pet_specie_color',
    16.             'foreign_key' => 'pet_specie_color_id',
    17.             'join_type' => 'inner',
    18.         ),
    19.     );
    20.     protected $RELATED = array(
    21.         'user' => array(
    22.             'class' => 'User',
    23.             'local_key' => 'user_id',
    24.             'foreign_key' => 'user_id',
    25.             'one' => true,
    26.         ),
    27.     );
    28.  
    29.     /**
    30.      * Get the full URL for this pet's image.
    31.      * 
    32.      * @return string 
    33.      /////////////*извлекаю запись из бд - формат даты: 2014-05-06 11:27:28*/////////////
    34.           
    35.  
    36.     /////////////*пытаюсь перевести полученную дату в mktime*/////////////
    37.         //$happybirthday = date('Y-m-d H:i:s', mktime($year, $month, $day, $H, $i, $s));
    38.     ////echo happybirthday($happybirthday);
    39.  
    40.   // Количество лет, месяцев и дней, прошедших со дня рождения
    41.   
    42.  
    43.     
    44.       function happybirthday($birthdayStr)
    45.         {
    46.        $happybirthday = $this->getCreatedAt();
    47.         $now = new DateTime();
    48.         $birthday = new DateTime($birthdayStr);
    49.         list($year, $month, $day) = explode('|', $birthday->diff($now)->format('%y|%m|%d'));
    50.             $result = declination($year);
    51.             $result .= declination($month);
    52.             $result .= declination($day);
    53.             return $result;
    54.         }
    55.         
    56. public function getDate($birthdayStr)
    57. {
    58.   $now = new DateTime();
    59.   $birthday = new DateTime($birthdayStr);
    60.   return explode('|', $birthday->diff($now)->format('%y|%m|%d'));
    61. $date = $this->getDate($birthdayStr);
    62.   $month = $data[1];
    63. }
    64. //
    65.  
    66.  
    67.      //////**/////
    68.     public function getImageUrl()
    69.     {
    70.         global $APP_CONFIG;
    71.         if($month > 0 && $month <= 1) return "{$APP_CONFIG['public_dir']}/resources/pets/{$this->getRelativeImageDir()}/{$this->getColorImg()}";
    72.         elseif($month > 1 && $month <= 2) return "{$APP_CONFIG['public_dir']}/resources/pets/{$this->getRelativeImageDir()}/"."2"."{$this->getColorImg()}";
    73.         elseif($month > 2 && $month <= 4) return "{$APP_CONFIG['public_dir']}/resources/pets/{$this->getRelativeImageDir()}/"."3"."{$this->getColorImg()}";
    74.         elseif($month > 4 && $month <= 9) return "{$APP_CONFIG['public_dir']}/resources/pets/{$this->getRelativeImageDir()}/"."4"."{$this->getColorImg()}";
    75.         elseif($month > 9) return "{$APP_CONFIG['public_dir']}/resources/pets/{$this->getRelativeImageDir()}/"."5"."{$this->getColorImg()}";
    76.         ;
    77.     } // end getImageUrl
    78.  
    79.     /**
    80.      * Make this its owner's active pet.
    81.      * 
    82.      * @return bool 
    83.      **/
    84.     public function makeActive()
    85.     {
    86.         $user = $this->grabUser();
    87.  
    88.         // Should never happen...
    89.         if($user == null)
    90.         {
    91.             return false;
    92.         }
    93.  
    94.         $user->setActiveUserPetId($this->getUserPetId());
    95.         $user->save();
    96.         
    97.         return true;
    98.     } // end public function makeActive
    99.  
    100.     /**
    101.      * Add the appropriate amount to the pet's hunger level. 
    102.      * 
    103.      * @param integer $amount 
    104.      * @return bool 
    105.      **/
    106.     public function consume($amount)
    107.     {
    108.         $hunger = $this->getHunger() + $amount;
    109.         if($hunger > $this->getMaxHunger())
    110.         {
    111.             $hunger = $this->getMaxHunger();
    112.         }
    113.         
    114.         $this->setHunger($hunger);
    115.  
    116.         return $this->save();
    117.     } // end consume
    118.  
    119.     /**
    120.      * Add the appropriate amount to the pet's happiness level. 
    121.      * 
    122.      * @param integer $amount 
    123.      * @return bool 
    124.      **/
    125.     public function play($amount)
    126.     {
    127.         $happy = $this->getHappiness() + $amount;
    128.         if($happy > $this->getMaxHappiness())
    129.         {
    130.             $happy = $this->getMaxHappiness();
    131.         }
    132.         
    133.         $this->setHappiness($happy);
    134.  
    135.         return $this->save();
    136.     } // end consume
    137.  
    138.     /**
    139.      * Hackishly return the hunger level as a string. 
    140.      * 
    141.      * @hack
    142.      * @return string 
    143.      **/
    144.     public function getHungerText()
    145.     {
    146.         $hunger = $this->getHunger();
    147.  
    148.         if($hunger <= 2) return 'Истощение! Покормите!';
    149.         elseif($hunger > 2 && $hunger <= 4) return 'Сильный голод';
    150.         elseif($hunger > 4 && $hunger <= 6) return 'Небольшой голод';
    151.         elseif($hunger > 6 && $hunger <= 8) return 'Не голоден, но не против лакомства';
    152.         elseif($hunger > 8 && $hunger <= 12) return 'Сыт';
    153.         elseif($hunger > 12) return 'Обжора! Лопнет же!';
    154.         
    155.         return 'error!';
    156.     } // end getHungerText
    157.  
    158.     /**
    159.      * Hackishly return the happiness level as a string. 
    160.      * 
    161.      * @hack
    162.      * @return string 
    163.      **/
    164.     public function getHappinessText()
    165.     {
    166.         $happy = $this->getHappiness();
    167.  
    168.         if($happy <= 2) return 'В бешенстве! >8E';
    169.         elseif($happy > 2 && $happy <= 4) return 'Грустит и злится >:(';
    170.         elseif($happy > 4 && $happy <= 6) return 'В печали :(';
    171.         elseif($happy > 6 && $happy <= 8) return 'Нейтралитет :|';
    172.         elseif($happy > 8 && $happy <= 12) return 'Счастье :)';
    173.         elseif($happy > 12) return 'Счастье и радость! :D';
    174.         
    175.         return 'error!';
    176.     } // end getHungerText
    177.  
    178.     /**
    179.      * If it's time for the pet's attribute to drop, do it. 
    180.      * 
    181.      * @param integer $period_length The number of seconds that equals 
    182.      *                               one period.
    183.      * @return bool
    184.      **/
    185.     public function doDecrement($period_length=3600)
    186.     {
    187.         // It is time.
    188.         if($this->getUnixtimeNextDecrement() <= time())
    189.         {
    190.             // First time.
    191.             if($this->getUnixtimeNextDecrement() == 0)
    192.             {
    193.                 $interval = 1;
    194.             }
    195.             else
    196.             {
    197.                 $interval = time() - $this->getUnixtimeNextDecrement();
    198.                 $interval = floor($interval / $period_length);
    199.             }
    200.  
    201.             return $this->decrementAttributes($interval,(time() + $period_length));
    202.         } // end time check
    203.         
    204.         // Nope, not time.
    205.         return false;
    206.     } // end doDecrement
    207.  
    208.  
    209.     /**
    210.      * Decrement a pet's hunger/happiness level by rand(1,3).
    211.      * 
    212.      * @param int $periods The number of periods to decrement for.
    213.      * @param int $next_time The next time to perform decremention at.
    214.      * @return bool
    215.      **/
    216.     protected function decrementAttributes($periods,$next_time)
    217.     {
    218.         // The DB should protected against negative values.
    219.         $this->setHunger(($this->getHunger() - (rand(1,3) * $periods)));
    220.         $this->setHappiness(($this->getHappiness() - (rand(1,3) * $periods)));
    221.         $this->setUnixtimeNextDecrement($next_time);
    222.         
    223.         return $this->save();
    224.     } // end decrementAttributes
    225. } // end Pet
    226.  
    227. ?>
     
  24. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    сдампи базу и дай
     
  25. Azura

    Azura Новичок

    С нами с:
    11 май 2014
    Сообщения:
    22
    Симпатии:
    0
    В предыдущем архиве была база прямо в архиве, но для удобства - вот отдельно =) :
    http://yadi.sk/d/cSHs977KPqPNj