Esempio n. 1
0
 /**
  * Add task to data provider
  * @param Task $task
  * @return int
  */
 public function add_task(Task $task)
 {
     $this->lock_file();
     $task->set_id($this->get_new_id());
     $this->save_task($task);
     $xml_dom = $this->get_xml_dom();
     $task_child_xml = $xml_dom->addChild(self::TASK_XML);
     foreach ($task->get($this->index_row) as $item_name => $item_value) {
         $task_child_xml->addAttribute($item_name, $item_value);
     }
     $task_child_xml->addAttribute(TaskConst::TYPE, TaskConst::TASK);
     if ($task->have_subtasks()) {
         $sub_tasks_child_xml = $task_child_xml->addChild(self::SUB_TASKS_XML);
         foreach ($task->sub_tasks()->get_all() as $sub_task) {
             $sub_task->set_id($this->get_new_id());
             $sub_task_child_xml = $sub_tasks_child_xml->addChild(self::TASK_XML);
             foreach ($sub_task->get($this->index_row) as $item_name => $item_value) {
                 $sub_task_child_xml->addAttribute($item_name, $item_value);
             }
             $sub_task_child_xml->addAttribute(TaskConst::TYPE, TaskConst::SUB_TASK);
             $this->save_task($sub_task);
         }
     }
     $this->save_xml_dom($xml_dom);
     $this->release_file();
     return $task->get_id();
 }
Esempio n. 2
0
 /**
  * Sql Insert
  * @param Task $task
  * @return Task
  */
 private function insert_task(Task $task)
 {
     $task_array = $task->to_array();
     unset($task_array['id']);
     $task_array_keys = array_map(function ($entity) {
         return ":" . $entity;
     }, array_keys($task_array));
     $query = $this->connection->prepare("INSERT INTO {$this->table_name}(" . implode(',', array_keys($task_array)) . ") values(" . implode(',', $task_array_keys) . ")");
     $query->execute($task_array);
     $task->set_id($this->connection->lastInsertId());
     return $task;
 }