Exemple #1
0
 public static function sendInBestPhotoPhotoWeek()
 {
     Yii::$app->db->createCommand("DELETE FROM best_photo WHERE type = 2")->execute();
     $bestPhotos = Photo::identifyBestPhotoDay();
     $users_id = [];
     $sql = "INSERT INTO best_photo (id_photo, type, id_level_1, id_level_2) VALUES ";
     $cnt = count($bestPhotos);
     for ($i = 0; $i < $cnt; ++$i) {
         $users_id[$bestPhotos[$i]['id_author']]++;
         $sql .= " (" . $bestPhotos[$i]['id'] . ", 2, " . $bestPhotos[$i]['id_level_1'] . ", " . $bestPhotos[$i]['id_level_2'] . ")";
         if ($i < $cnt - 1) {
             $sql .= ', ';
         }
     }
     \Yii::$app->db->createCommand($sql)->execute();
     $photoIds = [];
     foreach ($bestPhotos as $photo) {
         $photoIds[] = $photo['id'];
     }
     $ids = implode(', ', $photoIds);
     $users = (new Query())->select('u.id')->from('user u')->innerJoin('photos p', 'p.id_author=u.id')->where(['u.id' => $photoIds])->all();
     $user_t = [];
     foreach ($users as $user) {
         $user_t[$user['id']]++;
     }
     Yii::$app->db->createCommand("UPDATE photos SET r_week=0 WHERE 1")->execute();
     $sql = "";
     foreach ($users_id as $k => $v) {
         $r = self::PHOTO_WEEK * $v;
         $sql .= "UPDATE user SET photo_week=photo_week+{$v}, rating=rating+{$r} WHERE id={$k};";
     }
     Yii::$app->db->createCommand($sql)->execute();
 }