/**
  * Set config option value
  *
  * @param string $name
  * @param mixed $value
  * @return mixed
  */
 function setValue($name, $value)
 {
     $option = ConfigOptions::findByName($name);
     if (instance_of($option, 'ConfigOption')) {
         $option->setValue($value);
         $save = $option->save();
         if ($save && !is_error($save)) {
             $cached_values = cache_get('config_values');
             if (is_array($cached_values)) {
                 $cached_values[$name] = $value;
             } else {
                 $cached_values = array($name => $value);
             }
             // if
             cache_set('config_values', $cached_values);
             cache_remove(TABLE_PREFIX . 'config_options_name_' . $name);
             return $value;
         } else {
             return $save;
         }
         // if
     } else {
         return new InvalidParamError('name', $name, "System configuration option '{$name}' does not exist", true);
     }
     // if
 }
 /**
  * Set value of $name config option for a given project
  *
  * @param string $name
  * @param mixed $value
  * @param Project $project
  * @return mixed
  */
 function setValue($name, $value, $project)
 {
     $option = ConfigOptions::findByName($name, PROJECT_CONFIG_OPTION);
     if (instance_of($option, 'ConfigOption')) {
         $table = TABLE_PREFIX . 'project_config_options';
         $count = db_execute_one("SELECT COUNT(*) AS 'row_num' FROM {$table} WHERE project_id = ? AND name = ?", $project->getId(), $name);
         if (isset($count) && $count['row_num'] > 0) {
             $result = db_execute("UPDATE {$table} SET value = ? WHERE project_id = ? AND name = ?", serialize($value), $project->getId(), $name);
         } else {
             $result = db_execute("INSERT INTO {$table} (project_id, name, value) VALUES (?, ?, ?)", $project->getId(), $name, serialize($value));
         }
         // if
         return $result && !is_error($result) ? $value : $result;
     } else {
         return new InvalidParamError('name', $name, "Project configuration option '{$name}' does not exist", true);
     }
     // if
 }
 /**
  * Set value of $name config option for a given company
  *
  * @param string $name
  * @param mixed $value
  * @param Company $company
  * @return mixed
  */
 function setValue($name, $value, $company)
 {
     $option = ConfigOptions::findByName($name, COMPANY_CONFIG_OPTION);
     if (instance_of($option, 'ConfigOption')) {
         $table = TABLE_PREFIX . 'company_config_options';
         $count = db_execute_one("SELECT COUNT(*) AS 'row_num' FROM {$table} WHERE company_id = ? AND name = ?", $company->getId(), $name);
         if (isset($count) && $count['row_num'] > 0) {
             $result = db_execute("UPDATE {$table} SET value = ? WHERE company_id = ? AND name = ?", serialize($value), $company->getId(), $name);
         } else {
             $result = db_execute("INSERT INTO {$table} (company_id, name, value) VALUES (?, ?, ?)", $company->getId(), $name, serialize($value));
         }
         // if
         if ($result && !is_error($result)) {
             $cache_id = 'company_config_options_' . $company->getId();
             $cached_values = cache_get($cache_id);
             if (is_array($cached_values)) {
                 $cached_values[$name] = $value;
             } else {
                 $cached_values = array($name => $value);
             }
             // if
             cache_set($cache_id, $cached_values);
             return $value;
         } else {
             return $result;
         }
         // if
     } else {
         return new InvalidParamError('name', $name, "Company configuration option '{$name}' does not exist", true);
     }
     // if
 }
 /**
  * Log user out
  *
  * @param void
  * @return null
  */
 function logout()
 {
     $this->setLayout('application');
     if (!instance_of($this->logged_user, 'User')) {
         $this->redirectTo('login');
     }
     // if
     // Logout and redirect to login screen...
     $this->authentication->provider->logUserOut();
     $option = ConfigOptions::findByName('on_logout_url');
     $on_logout_url = $option->getValue();
     $this->redirectToUrl(is_valid_url($on_logout_url) ? $on_logout_url : assemble_url('login'));
 }