public function grabber(array $directory_user) { try { $directory = new DM_Directory($directory_user['directory_id']); if (!$directory->exists()) { throw new Exception('Directory id:' . $directory_user['directory_id'] . ' doesn\'t exist'); } if (!$directory->status) { throw new Exception('Directory id:' . $directory_user['directory_id'] . ' is disabled'); } $link = !empty($directory_user['additional']) ? $directory_user['additional'] : $directory_user['link']; $directory_parcer = Directory_Parser::factory($directory->type)->set_url($link); $reviews = $directory_parcer->get_reviews(); } catch (Exception $e) { throw $e; } //$today_midnight = strtotime('-7 day midnight'); $today_midnight = strtotime('-14 day midnight'); foreach ($reviews as $_review) { $review_model = new Review(); $review_model->from_array($_review); $review_model->user_id = $directory_user['user_id']; $review_model->directory_id = $directory_user['directory_id']; $review_model->posted_date = date('Y-m-d', $_review['posted']); $review_model->save(); // notify user about new review if (!empty($directory_user['notify_status']) && $_review['posted'] > $today_midnight && !empty($review_model->id) && !empty($directory_user['user_id']) && !empty($directory_user['notify'])) { $obj = Reviews_notification::addOne($directory_user['user_id'], $review_model->id); if (!$obj->id) { echo 'Error notification: ' . date('d-m-Y H:i') . ' - ' . $obj->error->string . PHP_EOL; } } } }
protected function grabb($directory_user) { log_message('TASK_ERROR', __FUNCTION__ . ' > ' . 'Reviews grabber'); try { $directory = new DM_Directory($directory_user['directory_id']); if (!$directory->exists()) { throw new Exception('Directory id:' . $directory_user['directory_id'] . ' doesn\'t exist'); } if (!$directory->status) { throw new Exception('Directory id:' . $directory_user['directory_id'] . ' is disabled'); } $link = !empty($directory_user['additional']) && !($directory->type == 'Foursquare') ? $directory_user['additional'] : $directory_user['link']; $directory_parcer = Directory_Parser::factory($directory->type)->set_url($link); //For fousquare only $directory_parcer->set_directory_user($directory_user); $reviews = $directory_parcer->get_reviews(); } catch (Exception $e) { log_message('TASK_ERROR', __FUNCTION__ . ' > ' . 'Reviews: ' . $e->getMessage()); throw $e; } //$today_midnight = strtotime('-7 day midnight'); $today_midnight = strtotime('-34 day midnight'); if (is_array($reviews) && !empty($reviews)) { foreach ($reviews as $_review) { $review_model = new Review(); $review_model->from_array($_review); $review_model->user_id = $directory_user['user_id']; $review_model->directory_id = $directory_user['directory_id']; $review_model->posted_date = date('Y-m-d', $_review['posted']); $review_model->save(); if (!$review_model->id) { var_dump($review_model->error); } log_message('TASK_ERROR', __FUNCTION__ . ' > ' . 'Review saved'); // notify user about new review if ($_review['posted'] > $today_midnight && !empty($review_model->id) && !empty($directory_user['user_id']) && !empty($directory_user['notify'])) { $obj = Reviews_notification::addOne($directory_user['user_id'], $review_model->id); if (!$obj->id) { echo 'Error notification: ' . date('d-m-Y H:i') . ' - ' . $obj->error->string . PHP_EOL; } } } } }
/** * Update user's directories * * @param $user_id * @param $profile_id * @param $directories_ids * @param array $additions * * @return array */ public static function update_user_dir($user_id, $profile_id, $directories_ids, $additions = array()) { $errors = array(); $obj = new self(); $table = $obj->table; $obj = new self(); $old_options = array(); foreach ($obj->where(array('user_id' => $user_id, 'profile_id' => $profile_id))->get() as $old_option) { $old_options[$old_option->directory_id] = $old_option->to_array(); } $sql = "DELETE FROM {$table} WHERE user_id = {$user_id} AND profile_id = {$profile_id}"; $obj->db->query($sql); if (empty($directories_ids)) { return; } $notify = empty($additions['notify']) ? 0 : 1; foreach ($directories_ids as $dir_id => $link) { $directory = new DM_Directory($dir_id); if (!$directory->exists()) { $errors[] = 'Directory #' . $dir_id . '(' . $link . ') doesn\'t exist'; continue; } try { $directory_parcer = Directory_Parser::factory($directory->type); } catch (Exception $e) { $errors[] = 'Directory\'s #' . $directory->id . '(' . $directory->name . ') parser doesn\'t configured'; continue; } if (!$directory_parcer->valid_url($link)) { $errors[] = 'Invalid url for directory ' . $directory->name; continue; } if (empty($old_options[$dir_id]) || $link !== $old_options[$dir_id]['link']) { Review::deleteByUserDirectory($user_id, $dir_id); } $new_settings = new self(); $new_settings->from_array(array('user_id' => $user_id, 'profile_id' => $profile_id, 'link' => $link, 'directory_id' => $dir_id, 'notify' => $notify)); $new_settings->save(); } return $errors; }