/** * Переносим ответы на проекты в работающие таблицы * * @param array $offers Ответы на проекты * @return array */ public function transferOffers($offers) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/projects_offers.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/contest.php"; foreach ($offers as $k => $offer) { $pict1 = str_replace("sm_", "", $offer['pict1']); $pict2 = str_replace("sm_", "", $offer['pict2']); $pict3 = str_replace("sm_", "", $offer['pict3']); // Переносим файлы в рабочие папки сайта $files = $this->_db->rows("SELECT DISTINCT id FROM file_wizard WHERE fname IN (?l)", array($pict1, $pict2, $pict3)); if ($files) { $dir = "users/" . substr($this->user->login, 0, 2) . "/" . $this->user->login . "/upload/"; $table = 'file'; $picts = $this->transferFiles($files, $table, $dir, false); $sm_files = $this->_db->rows("SELECT DISTINCT id FROM file_wizard WHERE fname IN (?l)", array($offer['pict1'], $offer['pict2'], $offer['pict3'])); if ($sm_files) { $sm_picts = $this->transferFiles($sm_files, $table, $dir, false); } } if ($offer['kind'] != 7) { $error = projects_offers::AddOffer(wizard::getUserIDReg(), $offer['project_id'], $offer['cost_from'], $offer['cost_to'], $offer['cost_currency'], $offer['time_from'], $offer['time_to'], $offer['time_type'], $offer['descr'], 0, 0, 0, null, null, null, null, null, null, $picts[0]['fname'], $picts[1]['fname'], $picts[2]['fname'], $sm_picts[0]['fname'], $sm_picts[1]['fname'], $sm_picts[2]['fname']); } else { // Пишем ответ на конкурс $contest = new contest($offer['project_id'], wizard::getUserIDReg()); $error = $contest->CreateOffer($offer['descr'], implode('/', $files), false); if ($picts && $contest->new_oid) { $content_pict = array(); foreach ($picts as $k => $pict) { $content_pict[] = array('uid' => wizard::getUserIDReg(), 'file' => $pict['id'], 'prev' => $sm_picts[$k]['id'], 'orig_name' => $pict['orig_name'], 'post_date' => date('Y-m-d H:i:s')); } $contest->addOfferFiles($contest->new_oid, $content_pict); } } if (!$error) { $delete_offers[] = $offer['id']; } else { $error_offer[] = $error . " - ответ на проект #{$offer['id']}"; } unset($error); } // Очищаем перенесенные данные если нет ошибок если есть выводим if ($error_offer) { foreach ($error_offer as $error) { $this->log->writeln("Error transfer offer content - user (" . wizard::getUserIDReg() . "|" . $this->getWizardUserID() . ") - Error: {$error}"); } } else { if ($delete_offers) { $this->_db->query("DELETE FROM wizard_offers WHERE id IN (?l) AND wiz_uid = ?", $delete_offers, $this->getWizardUserID()); } } return $error_offer; }