| Source for file class.project.phpDocumentation is available at class.project.php 
 * @package linea21.modules * @author linea21 <info@linea21.com> * @license http://opensource.org/licenses/gpl-3.0.html  public function __call($method, $arguments)    $event = $this->dispatcher->notifyUntil(new sfEvent($this, 'project.extensible_function', array(      'arguments' => $arguments    if (!$event->isProcessed())      throw new Exception(sprintf('Call to undefined method %s::%s.', get_class($this), $method));    return $event->getReturnValue();   * @param int $m chiffre des mois   * @param int $d chiffre des jours   * @param int $y chiffre des années   * @return string $format_date  function _getDate($m = 0, $d = 0, $y = 0)    $format_date = strftime('%Y-%m-%d %H:%M:%S', $format_date);   * project::CheckDataIntegrity()   * Vérification intégrité des données   * @param array $table : contient les composants Nécessaires d'un projet   *  si verifié, sinon string 'message d'erreur'      // Filter data event + return value      $r = $this->dispatcher->filter(new sfEvent($this, 'project.before_datacheck', array('data' => $table)), $table);      $table = $r->getReturnValue();      _debug("budget::".$table[15]);    if (strlen($table[0]) < 3) return _t('project','no_name');    if (strlen($table[1]) < 3) return _t('project','no_description');    if (strlen($table[2]) < 3) return _t('project','no_body');    if ($table[5] <= 0 || !is_numeric($table[5])) return _t('project','no_priority');    if ($table[4] <= 0 || !is_numeric($table[4])) return _t('project','no_scale');    if(!is_numeric($table[14]) || $table[14] >100 || $table[14] <0 ) return _t('project','progression_error');    if(!empty($table[15]) && !is_numeric($table[15])) return _t('project','budget_integer');    // Notify the beginning of the current method    $this->dispatcher->notify(new sfEvent($this, 'project.after_datacheck', array('data' => $table)));   * @param array $array : contient les composants d'un projet   * @param object $sql_object    * @return integer $last_id      // Filter data event + return value      $r = $this->dispatcher->filter(new sfEvent($this, 'project.before_add', array('data' => $array)), $array);      $array = $r->getReturnValue();    $array=$sql_object->DBescape($array);    $query = "INSERT INTO " . $this->TDB_PROJECT  . " (project_name, project_description, project_body, " .    "project_parent_id, project_priority_id, project_scale_id, " .    "project_begin_date, project_estimated_date, project_end_date, ".    "project_completed, project_theme_id, project_workshop_id, ".    "project_posted_by, project_published_date, " .    "project_statut, project_date_crea) " .    $this->ID = $sql_object->DBInsert ($query, 1);    $this->_addSDI($sql_object);    $this->addActors($this->ID, $this->PARTNERS, 'partner');    // Notify the end of the current method    $this->dispatcher->notify(new sfEvent($this, 'project.after_add', array('data' => $array, 'id' => $this->ID)));   * project::modifyActors()   * Ajout d'un ou plusieurs acteurs au projet   * @param int $id identifiant du projet   * @param string $content acteurs séparés par des virgules   * @return integer $last_id  private function modifyActors($id, $content, $type) {      // Notify the beginning of the current method      $this->dispatcher->notify(new sfEvent($this, 'project.modify_actor', array('id' => $id, 'content' => $content, 'type' => $type)));      $query = "DELETE FROM " . J_PROJECT_ACTOR . " WHERE jpa_project_id='" .$id ."' AND jpa_type='" . $type . "';";      $result = $sql_object->DBQuery($query);          $result = $this->addActors($id, $content, $type);   * Ajout d'un ou plusieurs acteurs au projet   * @param int $id identifiant du projet   * @param string $content acteurs séparés par des virgules   * @return integer $last_id  private function addActors($id, $content, $type)      // Notify the beginning of the current method      $this->dispatcher->notify(new sfEvent($this, 'project.add_actor', array('id' => $id, 'content' => $content, 'type' => $type)));      // we remove latest comma      if (substr($content, -1) == ',') {          $content = substr($content, 0, -1);      // we explode string to array      $array = $sql_object->DBEscape($array);      for ($i = 0;$i < count($array);$i ++) {          // we check if actor already exists          $q = "SELECT actor_id FROM " . T_ACTOR . " WHERE lower(actor_name) = '" . strtolower($array[$i]) . "';";          $data = $sql_object->DBSelect($q);          // if already exists, we retrieve id          if(isset($data[0]['actor_id'])) {              $actor_id = $data[0]['actor_id'];              // else we create it and retrieve id              $q = "INSERT INTO " . T_ACTOR . " (actor_name) VALUES('" . $array[$i] . "');";              $last_id = $sql_object->DBInsert ($q, 1);          // finally we insert tuple in table          $q = "INSERT INTO " . J_PROJECT_ACTOR . " (jpa_project_id, jpa_actor_id, jpa_type) VALUES(" . $id . ", " . $actor_id . ",'" . $type . "');";          $last_id = $sql_object->DBInsert ($q, 1);   * project::DeleteProject()   * suppression d'un projet   * @param int $ID : identifiant du projet   * @param object $sql_object       // Notify the end of the current method      $this->dispatcher->notify(new sfEvent($this, 'project.delete', array('id' => $ID)));    $query = "UPDATE " . $this->TDB_PROJECT  . " set project_statut='E', project_last_modify=NOW() WHERE project_id='" . $this->ID  . "';";    $result = $sql_object->DBQuery($query);      $query = "DELETE FROM " . J_PROJECT_SDI . " WHERE jps_project_id='" .$this->ID ."';";      $res = $sql_object->DBQuery($query);        $query = "DELETE FROM " . J_PROJECT_ACTOR . " WHERE jpa_project_id='" .$this->ID ."';";        $res = $sql_object->DBQuery($query);      $query = "UPDATE " . $this->TDB_PROJECT  . " set project_parent_id=0 WHERE project_parent_id='" . $this->ID  . "';";      $result = $sql_object->DBQuery($query);   * project::ModifyProject()   * modification d'un projet   * @param integer $ID : identifiant du projet   * @param object $sql_object    * @param array $array : contient les composants d'un projet   * @return boolean $result      // Filter data event + return value      $r = $this->dispatcher->filter(new sfEvent($this, 'project.before_modify', array('data' => $array, 'id' => $ID)), $array);      $array = $r->getReturnValue();    $array=$sql_object->DBescape($array);    $this->modifyActors($this->ID, $this->COORDINATOR, 'coordinator');    $this->modifyActors($this->ID, $this->PARTNERS, 'partner');    $mask = $this->_HavePublishedDate($array[10]);        $query = "UPDATE  " . $this->TDB_PROJECT  . " SET project_name='" . $this->NAME  . "', project_description='" . $this->DESCRIPTION . "', project_body='" . $this->BODY  . "', project_budget=" . $this->BUDGET  . ", project_parent_id='" . $this->PARENT_ID  . "', project_scale_id='" . $this->SCALE_ID  . "', project_theme_id='" . $this->THEME_ID  ."', project_workshop_id='" . $this->WORKSHOP_ID  ."', project_priority_id='" . $this->PRIORITY_ID  . "', project_begin_date='" . $this->BEGIN_DATE  . "', project_estimated_date='" . $this->ESTIMATED_DATE  . "', project_end_date='" .$this->END_DATE ."', project_completed=" .$this->COMPLETED .", project_statut='" . $this->STATUT  . "', project_last_modify=NOW() " . $mask . " WHERE project_id='" . $this->ID  . "';";    $result = $sql_object->DBQuery($query);    $result = $this->_modifySDI($sql_object);    // Notify the end of the current method    $this->dispatcher->notify(new sfEvent($this, 'project.after_modify', array('data' => $array, 'id' => $this->ID)));   * project::changeRanges()   * @param array : Id (key) and ranges (value)   * @param object $sql_object     foreach ($array as $key => $value) {      $query = "UPDATE " . $this->TDB_PROJECT  . " set project_range='" .$value ."' WHERE project_id='" . $key . "';";      $result = $sql_object->DBQuery($query);    // Notify the beginning of the current method    $this->dispatcher->notify(new sfEvent($this, 'project.change_ranges', array('data' => $array)));   * associate indicators to project  function _addSDI($sql_object) {      // Notify the beginning of the current method      $this->dispatcher->notify(new sfEvent($this, 'project.add_sdi', array('data' => $this->SDI)));    foreach ($this->SDI as &$value) {      $query = "INSERT INTO " . J_PROJECT_SDI . " VALUES(" .$this->ID .", " .$value .");";      $result = $sql_object->DBQuery($query);   * associate indicators to project  function _modifySDI($sql_object) {      // Notify the beginning of the current method      $this->dispatcher->notify(new sfEvent($this, 'project.modify_sdi', array('data' => $this->SDI)));    $query = "DELETE FROM " . J_PROJECT_SDI . " WHERE jps_project_id='" .$this->ID ."';";    $result = $sql_object->DBQuery($query);      $result = $this->_addSDI($sql_object);   * project::_HavePublishedDate()   * Détermine la date de publication a inserer dans la bdd   * @param string $current_status : statut actuel de l'actualité   * @return string $sql_mask  function _HavePublishedDate($current_status)        if ($current_status == 'D') $sql_mask = ", project_published_date= NOW()";        $sql_mask = ", project_published_date= '0001-01-01'"; |