Example #1
0
 /**
  * Restores this backup
  *
  * @return Workflow
  * @throws TerminusException
  */
 public function restore()
 {
     switch ($this->get('type')) {
         case 'code':
             $type = 'restore_code';
             break;
         case 'files':
             $type = 'restore_files';
             break;
         case 'database':
             $type = 'restore_database';
             break;
         default:
             throw new TerminusException('This backup has no archive to restore.');
             break;
     }
     $workflow = $this->environment->getWorkflows()->create($type, ['params' => ['key' => "{$this->environment->site->id}/{$this->environment->id}/{$this->get('filename')}", 'bucket' => $this->getBucket()]]);
     return $workflow;
 }
<?php

/**
 * Cron - Calculate the balance of the Google Search Ads Monthly Budget
 *			also it sends a Zendesk ticket to support in case the budget reaches $0
 */
require_once __DIR__ . '/../includes/include.php';
$execution_id = cron_start(157);
$send_email = false;
$to = environment::is_production() ? '*****@*****.**' : DEVELOPERS_EMAILS;
$yesterday_date = date('Y-m-d', strtotime('NOW - 1 days'));
// find all the google ads products regardless their status, which are the products with the budget and client id registered
// google product registered in our system and balance should be already added
$query = "\tSELECT product_data_id, member_id, currency_id, client_id,monthly_budget_product_data_id, balance, product_status  \n\t\t\tFROM\n\t\t\t(\n\t\t\t\tSELECT gpd.product_data_id, gpd.member_id, gpd.currency_id, ga.client_id ,\tga2mb.monthly_budget_product_data_id, \n\t\t\t\t\tgapc.budget_credit as balance,\n\t\t\t\t\t(\n\t\t\t\t\t\tSELECT product_status \n\t\t\t\t\t\tFROM sYra.generic_products_data \n\t\t\t\t\t\tWHERE product_data_id = monthly_budget_product_data_id\n\t\t\t\t\t) as product_status\n\t\t\t\tFROM sYra.generic_products_data gpd\n\t\t\t\t\tLEFT JOIN sYra.google_advertising ga ON ga.product_data_id = gpd.product_data_id\n\t\t\t\t\tLEFT JOIN sYra.google_advertising_to_monthly_budget ga2mb ON ga2mb.product_data_id = gpd.product_data_id\n\t\t\t\t\tLEFT JOIN sYra.google_advertising_product_credit gapc ON gapc.product_data_id = ga2mb.monthly_budget_product_data_id\n\t\t\t\tWHERE gpd.product_type_id = 29 AND ga.client_id IS NOT NULL\n\t\t\t\tGROUP BY gpd.product_data_id\n\t\t\t) aux_table\n\t\t\tWHERE product_status IN (3,10)\n\t\t\tORDER BY product_data_id";
$db_syssql = db::connect('syssql');
$result = $db_syssql->select($query)->execute();
if ($result->row_count() > 0) {
    $product_row = $result->fetch_all();
    foreach ($product_row as $product_key => $product_data) {
        $query = "\tSELECT SUM(COST) AS 'last_cost' \n\t\t\t\t\tFROM AWReports.AW_ReportAd aw \n\t\t\t\t\tWHERE aw.account_id = :client_id AND CAST(DAY AS DATE) = :yesterday_date";
        $bind = array(':client_id' => $product_data['client_id'], ':yesterday_date' => $yesterday_date);
        $result = db::connect('awreports')->select($query)->binds($bind)->execute()->fetch();
        if ($result['last_cost']) {
            $product_row[$product_key]['last_cost'] = $result['last_cost'];
        } else {
            unset($product_row[$product_key]);
        }
    }
    $subject = "Search Ad - Search Ads products budget has ended";
    $message = "The following Search Ad products have reached balance 0 (zero)." . PHP_EOL . PHP_EOL;
    foreach ($product_row as $product_details) {