All pastes #753593 Raw Edit

Mine

public php v1 · immutable
#753593 ·published 2007-10-29 11:21 UTC
rendered paste body
<?phprequire_once('generated/BaseTask.class.php');/** * This class has been auto-generated by the Doctrine ORM Framework */class Task extends BaseTask{  public function getTags()  {    $ret = '';    foreach($this->Tag as $tag)    {      $ret .= $tag->name . ' ';    }    return $ret;  }  /* tags are passed as a comma and/or space seperated string   * for exmaple:   * "Documentation Database, Other"  <=- this is 3 tags   */  public function setTags($tags)  {    $tags = str_replace(',', ' ', $tags);    $orig_tags = $this->getTags();    $new = explode(' ', $tags);    $old = explode(' ', $orig_tags);    $added = array_diff($new, $old);    // uses LIKE for case-insensitivity    $q = new Doctrine_Query();    $q->select('t.*')      ->from('TaskTag t')      ->innerjoin('t.Tag g')      ->where('g.name LIKE ?');    $removed = array_diff($old, $new);    // remove the old ones!    foreach($removed as $name)    {      // spaces result in empty names, ignore them      if ($name)      {        $ret = $q->fetchOne(array($name));        $ret->delete();      }    }    // uses LIKE for case-insensitivity    $find_q = new Doctrine_Query();    $find_q->select('t.id')           ->from('Tag t')           ->where('t.name LIKE ?');    foreach($added as $name)    {      // spaces result in empty names, ignore them      if ($name)      {        // first, lets see if a tag by this name already exists        $ret = $find_q->fetchOne(array($name));        if (!$ret)        {          $ret = new Tag();          $ret->name = $name;          $ret->save();        }        $new = new TaskTag();        $new->task_id = $this->id;        $new->tag_id = $ret->id;        $new->save();      }    }  }}