예제 #1
0
 /**
  * Update the issue associations
  *
  * @param int $issue_id issue to associate
  * @param array $associated_issues issue_id's to associate with
  */
 private function updateAssociatedIssuesRelations($issue_id, $associated_issues)
 {
     global $errors;
     // trim and remove empty values
     $associated_issues = array_filter(Misc::trim($associated_issues));
     // make sure all associated issues are valid (and in this project)
     foreach ($associated_issues as $i => $iss_id) {
         if ($iss_id == $issue_id) {
             // skip issue itself
             unset($associated_issues[$i]);
             continue;
         }
         if (!self::exists($iss_id, false)) {
             $error = ev_gettext('Issue #%s does not exist and was removed from the list of associated issues.', $iss_id);
             $errors['Associated Issues'][] = $error;
             unset($associated_issues[$i]);
         }
     }
     // this reindexes the array and removes duplicates filled by user
     $associated_issues = array_unique($associated_issues);
     $current = self::getDetails($issue_id);
     $association_diff = Misc::arrayDiff($current['associated_issues'], $associated_issues);
     if (!$association_diff) {
         // no diffs, return back
         return;
     }
     $usr_id = Auth::getUserID();
     // go through the new associations, if association already exists, skip it
     $associations_to_remove = $current['associated_issues'];
     if (count($associated_issues) > 0) {
         foreach ($associated_issues as $associated_id) {
             if (!in_array($associated_id, $current['associated_issues'])) {
                 self::addAssociation($issue_id, $associated_id, $usr_id);
             } else {
                 // already assigned, remove this user from list of issues to remove
                 unset($associations_to_remove[array_search($associated_id, $associations_to_remove)]);
             }
         }
     }
     if ($associations_to_remove) {
         foreach ($associations_to_remove as $associated_id) {
             self::deleteAssociation($issue_id, $associated_id);
         }
     }
 }
 /**
  * Retrieve information from LDAP
  *
  * @param string $uid login or email
  * @return array
  */
 public function getRemoteUserInfo($uid)
 {
     if (strpos($uid, '@') === false) {
         $filter = Net_LDAP2_Filter::create('uid', 'equals', $uid);
     } else {
         $filter = Net_LDAP2_Filter::create('mail', 'equals', $uid);
     }
     if (!empty($this->user_filter_string)) {
         $user_filter = Net_LDAP2_Filter::parse($this->user_filter_string);
         $filter = Net_LDAP2_Filter::combine('and', array($filter, $user_filter));
     }
     $search = $this->connect()->search($this->basedn, $filter, array('sizelimit' => 1));
     $entry = $search->shiftEntry();
     if (!$entry || Misc::isError($entry)) {
         return null;
     }
     $details = array('uid' => $entry->get_value('uid'), 'full_name' => Misc::trim($entry->get_value('cn')), 'emails' => Misc::trim(Misc::lowercase($entry->get_value('mail', 'all'))), 'customer_id' => Misc::trim($entry->get_value($this->customer_id_attribute)) ?: null, 'contact_id' => Misc::trim($entry->get_value($this->contact_id_attribute)) ?: null);
     return $details;
 }
예제 #3
0
function get_queries($file)
{
    $contents = file_get_contents($file);
    $queries = explode(';', $contents);
    $queries = Misc::trim($queries);
    $queries = array_filter($queries);
    return $queries;
}
예제 #4
0
 /**
  * Get mail handler if configured
  *
  * @return \Monolog\Handler\MailHandler
  */
 private static function createMailHandler()
 {
     $setup = Setup::get();
     if ($setup['email_error']['status'] != 'enabled') {
         return null;
     }
     $notify_list = trim($setup['email_error']['addresses']);
     if (!$notify_list) {
         return null;
     }
     // recipient list can be comma separated
     $to = Misc::trim(explode(',', $notify_list));
     $subject = APP_SITE_NAME . ' - Error found!';
     $handler = new Monolog\Handler\NativeMailerHandler($to, $subject, $setup['smtp']['from'], Monolog\Logger::ERROR);
     return $handler;
 }
예제 #5
0
 /**
  * Method used to get the list of email addresses to use
  * to send diagnostic information about the reminder system.
  *
  * @return  array The list of alert email addresses
  */
 public static function _getReminderAlertAddresses()
 {
     $emails = array();
     $setup = Setup::get();
     if ($setup['email_reminder']['status'] == 'enabled' && $setup['email_reminder']['addresses']) {
         $emails = explode(',', $setup['email_reminder']['addresses']);
         $emails = Misc::trim($emails);
     }
     return $emails;
 }
예제 #6
0
 /**
  * Returns the message IDs of all emails this message references.
  *
  * @param   string $text_headers The full headers of the message
  * @return  array An array of message-ids
  */
 public static function getAllReferences($text_headers)
 {
     $references = array();
     if (preg_match('/^In-Reply-To: (.*)/mi', $text_headers, $matches)) {
         $references[] = trim($matches[1]);
     }
     if (preg_match('/^References: (.+?)(\\r?\\n\\r?\\n|\\r?\\n\\r?\\S)/smi', $text_headers, $matches)) {
         $references = array_merge($references, explode(' ', self::unfold(trim($matches[1]))));
         $references = Misc::trim($references);
         $references = array_unique($references);
     }
     foreach ($references as $key => $reference) {
         if (empty($reference)) {
             unset($references[$key]);
         }
     }
     return $references;
 }