sie 07

W dzisiejszym wpisie zajmiemy się powiadamianiem klientów oraz nas samych o końcu ważności konta hostingowego. Ispcp w w wersji 1.0.7 daje możliwość ustawienia czasu wygaśnięcia konta jednak nie znalazłem do tego żadnych narzędzi które by z tego korzystały. W takim razie musimy naskrobać coś sami :)

Do naszego tool-a wykorzystamy php ponieważ będzie najprościej oraz kod ten będzie można w banalny sposób rozbudować o dodatkowe linie odpowiadające np za blokowanie dostępu do konta po określonym czasie.

Na początek musimy połączyć się z bazą

<?
 mysql_connect("localhost", "root", "secretpassword") or die(mysql_error());
 mysql_select_db("ispcp") or die(mysql_error());

Wrzucimy są funkcję (thx dla ZBT) która będzie gadać z mysql

 function result($query)
     {
          $array = $result = array();

          $query = mysql_query($query) or die(mysql_error());

          while($re = mysql_fetch_array($query, MYSQL_ASSOC))
                    $array[] = $re;

          if(!sizeof($array)) return false;

          foreach($array as $no => $arr)
               foreach($arr as $key => $val)
                    $result[$no][$key] = stripslashes($val);

          return $result;
     }

Teraz zapytanie

 $query = result("SELECT * FROM `domain`");

Pętelka która będzie przeszukiwać wszystkie rekordy w bazie. Dla kont które nie mają pusty rekord lub nie posiadają ustawionego czasu wygaśnięcia pętli nie wykonujemy.


foreach($query as $row){

    if (($row['domain_expires'] != '') || ($row['domain_expires'] != '0')){

Jak widać poniżej funkcja sprawdza sobie daty i wypluwa ilość dni pozostałych do wygaśnięcia konta

      $year = date('Y'); $month = date('n'); $day = date('d');
        $end = date("Y-m-d", $row['domain_expires']);
          $ile_dni = (strtotime("$end GMT")-strtotime("$year-$month-$day GMT"))/86400;

I użyteczna część czyli informacja na maila. Jeśli do końca pozostało 14 dni informujemy klienta pobierając jego email przyporządkowany do konta oraz wysyłamy do siebie krótką notkę.

  if ($ile_dni == '14'){
        $email = result("SELECT * FROM `admin` WHERE `admin_id` = '".$row['domain_admin_id']."'");
          foreach($email as $row1){
            $email=$row1['email'];
      }

      $naglowki = "From: contact@domain.tld".PHP_EOL."Content-type: text/plain; charset=utf-8";

      mail($email, 'Reminder', "\n\n\nWelcome ".$row['domain_name']." your account expire for 14 days", $naglowki);
      mail('myemail@domain.tld', 'Reminder', "\n\n\nAccount ".$row['domain_name']." for 14 days die", $naglowki);

    }

To samo dla 30 dni i zamykamy cały skrypt.

    if ($ile_dni == '30'){
        $email = result("SELECT * FROM `admin` WHERE `admin_id` = '".$row['domain_admin_id']."'");
          foreach($email as $row1){
            $email=$row1['email'];
      }

      $naglowki = "From: contact@domain.tld".PHP_EOL."Content-type: text/plain; charset=utf-8";

      mail($email, 'Reminder', "\n\n\nWelcome ".$row['domain_name']." your account expire for 30 days", $naglowki);
      mail('myemail@domain.tld', 'Reminder', "\n\n\nAccount ".$row['domain_name']." expire for 30 days", $naglowki);

    }

  }

}

?>

Tada :) Teraz wystarczy raz dziennie wrzucić skrypt do cron-a

* 9 * * * php /sbin/reminder_ispcp.php

i możemy spać spokojnie wiedząc, że klienci zostaną poinformowani o wygaśnięciu konta. Pozostaje tylko stworzyć interakcję z użytkownikiem np integracja z platnosci.pl lub system wysyłania faktur. Sposobów jest wiele. Jeśli mi się zachce (na co bym nie liczył) to z pewnością wrzucę tu takowy. Dla maruderów i malkontentów- skrypt można z pewnością napisać lepiej i bardziej przejrzyście ale pisanie czegoś o 3 w nocy nie uskrzydla :)
Na koniec dla leniwych gotowy skrypt z komentami
skrypt

Tagi: , , , , , , , ,