PHP / OOP Yardım - mantık ve tasarım sorunu

0 Cevap php

Bunu yapmak için en iyi nasıl çalışmak çalışıyor çevrelerinde yuvarlak gidiyorum, ben çok zor olması gerektiğini sanmıyorum ama ben o şekilde yapıyorum! Sitemde bir üyesi bazı verileri sağlar, her zaman, ben o üye için bir girdisi karşı saklayın. Fikir aydan aya ardışık veri göndermek üyeleri, bazı aşamada ödüllendirilir olmasıdır. Bazı parametreler olsa vardır: son ziyaret 21 gün içinde siteye döndüren bir üye bu yeni Entry sayılır, ancak önceki gibi aynı giriş dönem için sadece bir gönderme olmazdı. Aynı şekilde üye daha 49 gün son giriş tarihinden sonra siteye dönerse, o Giriş sıra numarası ardışık olmayacak ama girişler arasında bir mola göstererek, iki artırılır. Bu benim ayrımlar doğru zaman çerçevesinde veri doldurmak olanlar üyeleri arasında yapılacak izin ile geldim nedir - tüm mantıklı umut!

Ve benim kodu / tasarım sorununa, herkes bana burada benim kod geliştirmek için yardımcı olabilir ve zaman dilimleri içinde en iyi nasıl onay eklemek için? (- Bir veya iki tarafından son bir artırılır veya cari döneme zaten varolan birini, yani yeni bir) Bu, doğru girdiyi döndürür böylece ben girişlerini yönetmek için almak için çalışıyorum, benim model, .

Herhangi bir işaretçiler gerçekten takdir!

//example call from a controller after successful form submission - $this->entry is then passed around for use within that session
$this->entry = $this->pet->update_entry('pet/profile/2');


public function update_entry($stage = NULL)
{
    //get last number entered for this pet
    $last_entry = $this->last_entry();

    //if part one, pet profile is calling the update (passing the next stage as a param)
    if ($stage === 'pet/profile/2')
    {
        //only at this stage do we ever create a new entry
        $entry = ORM::factory('data_entry');

        //if no previous sessions, start from 1
        if ($last_entry === FALSE)
            $num = 1; 
        //here we need to check the time period elapsed since the last submission, still to be ironed out   
        //for now just increment each time, but this may change 
        else
            $num = $last_entry->number + 1;

        //save the rest of the data for a new entry
        $entry->number = $num;
        $entry->initiated = time();
        $entry->updated = time();
        $entry->last_category_reached = $stage;
        $entry->pet_id = $this->id;
        $entry->save();
    }
    elseif ($stage !== NULL)
    {
        //echo $stage; correctly prints out stage
        //this must be a continuation of a form, not the beginning of a new one
        //timeframe checks to be added here
        //just update the stage reached and save
        $last_entry->last_category_reached = $stage;
        $last_entry->updated = time();
        $last_entry->save();
        //assign to $entry for return
        $entry = $last_entry;
    }

    return $entry;
}

/**
 * 
 * Returns the the last data entry session
 */
public function last_entry()
{
        return $this
                    ->limit(1)
                    ->data_entries
                    ->current();

}**

0 Cevap