function checkInactiveProjects() { $report_message = ''; $db = new Database(); $sql_inactive_projects = "\n SELECT w.project_id, p.name, p.contact_info, u.nickname, MAX(status_changed) AS last_change\n FROM " . WORKLIST . " AS w\n INNER JOIN " . PROJECTS . " AS p ON w.project_id=p.project_id\n LEFT JOIN " . USERS . " AS u ON u.id=p.owner_id\n WHERE p.active = 1 OR 1\n GROUP BY w.project_id HAVING last_change < DATE_SUB(NOW(), INTERVAL 90 DAY)\n ORDER BY p.name ASC"; // Delete accounts which exists for at least 45 days and never have been used. $result = $db->query($sql_inactive_projects); while ($row = mysql_fetch_assoc($result)) { $project = new Project($row['project_id']); // send email $data = array('owner' => $row['nickname'], 'projectUrl' => Project::getProjectUrl($row['project_id']), 'projectName' => $row['name']); if (!Utils::sendTemplateEmail($row['contact_info'], 'project-inactive', $data)) { $report_message .= ' <p> Ok ---'; } else { $report_message .= ' <p> Fail -'; } $report_message .= ' Project (' . $row['project_id'] . ')- <a href="' . Project::getProjectUrl($row['project_id']) . '">' . $row['name'] . '</a> -- Last changed status: ' . $row['last_change'] . '</p>'; $project->setActive(0); $project->save(); } // Send report to ops if any project was set as inactive if ($report_message != '') { $headers['From'] = DEFAULT_SENDER; $subject = "Inactive Projects Report"; $body = $report_message; if (!Utils::send_email(OPS_EMAIL, $subject, $body, null, $headers)) { error_log('checkActiveProjects cron: Failed to send email report'); } } }
} } } /// proceed submission // proceed for $title $object->setTitle($title); // proceed for $password $object->setPassword($password); // proceed for $email $object->setEmail($email); // proceed for $description_en $object->setDescriptionEn($description_en); // proceed for $description_zh $object->setDescriptionZh($description_zh); // proceed for $active $object->setActive($active); // proceed for $price if (!empty($price)) { $object->setPrice($price); } // proceed for $images $object->setImages($images); // proceed for $thumbnail $object->setThumbnail($thumbnail); // proceed for $date $object->setDate($date / 1000); // proceed for $attachment $files = explode("\n", trim($attachment)); $rtn = array(); foreach ($files as $file) { $file = trim($file);
public function add($name) { $this->view = null; try { $user = User::find(Session::uid()); if (!$user->getId() || !$user->getIs_admin()) { throw new Exception('Action not allowed.'); } if (!preg_match('/^\\d*[-a-zA-Z][-a-zA-Z0-9]*$/', $name)) { throw new Exception('The name of the project can only contain alphanumeric characters plus dashes and must have 1 alpha character at least'); } try { $project = Project::find($name); } catch (Exception $e) { } if (is_object($project) && $project->getProjectId($name)) { throw new Exception('Project with the same name already exists!'); } $file = new File(); $logo = ''; if (!empty($_POST['logo'])) { $file->findFileById($_POST['logo']); $logo = basename($file->getUrl()); } $project = new Project(); $project->setName($name); $project->setDescription($_POST['description']); $project->setWebsite($_POST['website']); $project->setContactInfo($user->getUsername()); $project->setOwnerId($user->getId()); $project->setActive(true); $project->setInternal(true); $project->setRequireSandbox(true); $project->setLogo($logo); $project->setRepo_type('git'); $project->setRepository($_POST['github_repo_url']); $project->setGithubId($_POST['github_client_id']); $project->setGithubSecret($_POST['github_client_secret']); $project->save(); if ($file->getId()) { $file->setProjectId($project->getProjectId()); $file->save(); } $journal_message = '@' . $user->getNickname() . ' added project *' . $name . '*'; Utils::systemNotification($journal_message); echo json_encode(array('success' => true, 'message' => $journal_message)); } catch (Exception $e) { $error = $e->getMessage(); echo json_encode(array('success' => false, 'message' => $error)); } }