/** * protected функция выполняет действия над группой строк в таблице БД * * @param string $action * @param array $arrFields * * @return bool */ protected function actionCategorys($action, $arrFields, $silentMode = false) { switch ($action) { case 'edit': foreach ($arrFields as $key => $value) { $arrData = isset($value['arrNoBindFields']) ? $value['arrBindFields'] + $value['arrNoBindFields'] : $value['arrBindFields']; $result = $this->editEntrys(secure::escQuoteData($arrData), "id IN (" . secure::escQuoteData($key) . ")"); } break; case 'sort': foreach ($arrFields as $key => $value) { $arrSort[$value][] = $key; } foreach ($arrSort as $key => $value) { $result = $this->editEntrys(array('sort' => "'{$key}'"), "id IN (" . implode(',', secure::escQuoteData($value)) . ")"); } break; case 'del': $table = $this->retTableName(); $strFields = implode(',', secure::escQuoteData($arrFields)); $vacancy = new vacancy(); $result = $vacancy->delAnnounces('id_' . $table . ' IN (' . $strFields . ')'); $resume = new resume(); $result = $resume->delAnnounces('id_' . $table . ' IN (' . $strFields . ')'); $subscription = new subscription(); $strWhere = 'profession' !== $table ? 'id_' . $table . ' IN (' . $strFields . ')' : 'id_' . $table . ' IN (' . $strFields . ') OR id_' . $table . '_1 IN (' . $strFields . ') OR id_' . $table . '_2 IN (' . $strFields . ')'; $result = $subscription->delSubscriptions($strWhere); $result = $this->delCategorys('id IN (' . $strFields . ')'); break; case 'setcapital': $result = $this->editEntrys(array('capital' => "'on'"), "id IN (" . implode(',', secure::escQuoteData($arrFields)) . ") AND capital IN ('0')"); break; case 'resetcapital': $result = $this->editEntrys(array('capital' => "'0'"), "parent_id IN (" . implode(',', secure::escQuoteData($arrFields)) . ") AND capital IN ('on')"); break; case 'setRegionMajor': $result = $this->editEntrys(array('major' => "'on'"), "id IN (" . implode(',', secure::escQuoteData($arrFields)) . ") AND major IN ('0')"); break; case 'resetRegionMajor': $result = $this->editEntrys(array('major' => "'0'"), "id IN (" . implode(',', secure::escQuoteData($arrFields)) . ") AND major IN ('on')"); break; case 'setAddCityAllowed': $result = $this->editEntrys(array('add_city_allowed' => "'on'"), "id IN (" . implode(',', secure::escQuoteData($arrFields)) . ") AND add_city_allowed IN ('0')"); break; case 'resetAddCityAllowed': $result = $this->editEntrys(array('add_city_allowed' => "'0'"), "id IN (" . implode(',', secure::escQuoteData($arrFields)) . ") AND add_city_allowed IN ('on')"); break; default: if ($silentMode) { $result = false; } else { messages::messageChangeSaved(MESSAGE_WARNING_UNKNOWN_ACTION, false, CONF_ADMIN_FILE); } } return $result; }
messages::messageChangeSaved(MESSAGE_SUBSCRIPTION_ADDED, MESSAGE_TEST_SUBSCRIPTION_WAS_SEND, chpu::createChpuUrl(CONF_SCRIPT_URL . 'index.php?ut=' . $_SESSION['sd_user'][DB_PREFIX . 'conf']['user_type'] . '&do=subscription')); } else { // выдаем сообщение о том, что нет данных для рассылки messages::messageChangeSaved(MESSAGE_SUBSCRIPTION_ADDED, false, chpu::createChpuUrl(CONF_SCRIPT_URL . 'index.php?ut=' . $_SESSION['sd_user'][DB_PREFIX . 'conf']['user_type'] . '&do=subscription')); } } else { // если не удалось записать // если записать не удалось, возвращаем ошибку $arrErrors[] = db::$message_error ? db::$message_error : ERROR_MISMATCH_FIELDS; } } } elseif (isset($_POST['action'])) { // удаление if ('del' === $_POST['action'] && isset($_POST['subscr'])) { $strWhere = "id IN (" . implode(',', secure::escQuoteData(array_keys($_POST['subscr']))) . ")"; $subscription->delSubscriptions($strWhere); messages::messageChangeSaved(MESSAGE_CHANGE_SAVED, false, chpu::createChpuUrl(CONF_SCRIPT_URL . 'index.php?ut=' . $_SESSION['sd_user'][DB_PREFIX . 'conf']['user_type'] . '&do=subscription')); } elseif ('pay' === $_POST['action'] && isset($_POST['subscr'])) { // проверяем, чтобы в масиве была только одна подписка и получаем ее if (count($_POST['subscr']) === 1 && ($ps = each($_POST['subscr']))) { $_SESSION['payment'] = array('service' => 'subscr_' . $ps['value'], 'id' => $ps['key']); die('<script type="text/javascript">window.location="' . chpu::createChpuUrl(CONF_SCRIPT_URL . 'index.php?ut=' . $_SESSION['sd_user'][DB_PREFIX . 'conf']['user_type'] . '&do=payments') . '";</script>'); } else { messages::messageChangeSaved(MESSAGE_WARNING_PAYMENT_NO_MORE_THAN_ONE_RECORD, false, chpu::createChpuUrl(CONF_SCRIPT_URL . 'index.php?ut=' . $_SESSION['sd_user'][DB_PREFIX . 'conf']['user_type'] . '&do=subscription'), 5000); } } messages::messageChangeSaved(MESSAGE_WARNING_NOT_SELECT_RECORDS, false, chpu::createChpuUrl(CONF_SCRIPT_URL . 'index.php?ut=' . $_SESSION['sd_user'][DB_PREFIX . 'conf']['user_type'] . '&do=subscription')); } /** * ФОРМИРУЕМ СПИСКИ ПОДПИСОК */
static function actionsControl(&$arrActions) { $user = new user(); $subscription = new subscription(); $vacancy = new vacancy(); $resume = new resume(); foreach ($arrActions as $action => $type) { switch ($action) { case 'updateCounters': $result = caching::dropCache(); break; case 'delNonverifyUsers': $uData = $user->getCombinedUsersData(array(array('users', 'id')), "users.token IN ('new') AND users.token_datetime < NOW()", false, false); if (!empty($uData) && is_array($uData)) { foreach ($uData as $data) { $arrId[] = $data['id']; } } $result = !empty($arrId) ? $user->deleteUsers($arrId, false, false, false, false, false) : true; break; case 'delNontypeUsers': $uData = $user->getCombinedUsersData(array(array('users', 'id')), "conf_users.token IN ('new') AND users.token IN ('active') AND users.token_datetime < NOW()", false, false); if (!empty($uData) && is_array($uData)) { foreach ($uData as $data) { $arrId[] = $data['id']; } } $result = !empty($arrId) ? $user->deleteUsers($arrId, false, false, false, false, false) : true; break; case 'delUnpaidUsers': $uData = $user->getCombinedUsersData(array(array('users', 'id')), "conf_users.token IN ('payment') AND users.token_datetime < NOW()", false, false); if (!empty($uData) && is_array($uData)) { foreach ($uData as $data) { $arrId[] = $data['id']; } } $result = !empty($arrId) ? $user->deleteUsers($arrId, false, false, false, false, false) : true; break; case 'delUnpaidSubscr': $result = $subscription->delSubscriptions("token IN ('payment') AND token_datetime < NOW()"); break; case 'vacDelNonverify': $result = $vacancy->delAnnounces("token IN ('new') AND token_datetime < NOW()"); break; case 'resDelNonverify': $result = $resume->delAnnounces("token IN ('new') AND token_datetime < NOW()"); break; case 'vacDelUnpaid': $result = $vacancy->delAnnounces("token IN ('payment') AND token_datetime < NOW()"); break; case 'resDelUnpaid': $result = $resume->delAnnounces("token IN ('payment') AND token_datetime < NOW()"); break; case 'vacVipResetSlo': $result = $vacancy->controlAnnounces("vip AND token IN ('active') AND vip_unset_datetime NOT IN ('0000-00-00 00:00:00') AND vip_unset_datetime < NOW()", 'vip'); break; case 'resVipResetSlo': $result = $resume->controlAnnounces("vip AND token IN ('active') AND vip_unset_datetime NOT IN ('0000-00-00 00:00:00') AND vip_unset_datetime < NOW()", 'vip'); break; case 'vacHotResetSlo': $result = $vacancy->controlAnnounces("hot AND token IN ('active') AND hot_unset_datetime NOT IN ('0000-00-00 00:00:00') AND hot_unset_datetime < NOW()", 'hot'); break; case 'resHotResetSlo': $result = $resume->controlAnnounces("hot AND token IN ('active') AND hot_unset_datetime NOT IN ('0000-00-00 00:00:00') AND hot_unset_datetime < NOW()", 'hot'); break; case 'vacActionSlo': $result = $vacancy->controlAnnounces("token IN ('active') AND token_datetime < NOW()", $type); break; case 'resActionSlo': $result = $resume->controlAnnounces("token IN ('active') AND token_datetime < NOW()", $type); break; default: $result = true; break; } if (!$result) { return false; } else { continue; } } return true; }
/** * protected Функция удаления контента пользователей * Ф-я удаляет все объявления, подписки, статьи и новости пользователей * * @param (array) $arrId - массив, содержащий ID пользователей, контент которых нужно удалить * @param (bool) $vacancy, $resume, $subscription, $articles, $news - параметры, определяющие удаление соответствующих данных пользователя (TRUE || FALSE) * * @return void */ protected function deleteUsersContent($arrId, $vacancy, $resume, $subscription, $articles, $news) { // формируем запрос, для выбора всех необходимых пользователей $strWhere = "id_user IN (" . implode(',', secure::escQuoteData($arrId)) . ")"; // удаление вакансий if ($vacancy) { $vacancy = new vacancy(); $vacancy->delAnnounces($strWhere); } // удаление резюме if ($resume) { $resume = new resume(); $resume->delAnnounces($strWhere); } // удаление подписок if ($subscription) { $subscription = new subscription(); $subscription->delSubscriptions($strWhere); } // удаление статей if ($articles) { $articles = new articles(); $articles->deleteArticles(false, $strWhere); } // удаление новостей if ($news) { $news = new news(); $news->deleteNews(false, $strWhere); } }