Exemple #1
0
 static function saveOrganizations($sql, $filename, $how = 'csv')
 {
     $exclude = array('name');
     $form = OrganizationForm::getDefaultForm();
     $fields = $form->getExportableFields($exclude);
     // Field selection callback
     $fname = function ($f) {
         return 'cdata.`' . $f->getSelectName() . '` AS __field_' . $f->get('id');
     };
     $sql = substr_replace($sql, ',' . implode(',', array_map($fname, $fields)) . ' ', strpos($sql, 'FROM '), 0);
     $sql = substr_replace($sql, 'LEFT JOIN (' . $form->getCrossTabQuery($form->type, '_org_id', $exclude) . ') cdata
                 ON (cdata._org_id = org.id) ', strpos($sql, 'WHERE '), 0);
     $cdata = array_combine(array_keys($fields), array_values(array_map(function ($f) {
         return $f->get('label');
     }, $fields)));
     $cdata += array('account_manager' => 'Account Manager', 'users' => 'Users');
     ob_start();
     echo self::dumpQuery($sql, array('name' => 'Name') + $cdata, $how, array('modify' => function (&$record, $keys) use($fields) {
         foreach ($fields as $k => $f) {
             if ($f && ($i = array_search($k, $keys)) !== false) {
                 $record[$i] = $f->export($f->to_php($record[$i]));
             }
         }
         return $record;
     }));
     $stuff = ob_get_contents();
     ob_end_clean();
     if ($stuff) {
         Http::download($filename, "text/{$how}", $stuff);
     }
     return false;
 }
 function updateOrg($id, $orgId = 0)
 {
     global $thisstaff;
     if (!$thisstaff) {
         Http::response(403, 'Login Required');
     } elseif (!($user = User::lookup($id))) {
         Http::response(404, 'Unknown customer');
     }
     $info = array();
     $info['title'] = 'Organization for ' . Format::htmlchars($user->getName());
     $info['action'] = '#users/' . $user->getId() . '/org';
     $info['onselect'] = 'ajax.php/users/' . $user->getId() . '/org';
     if ($_POST) {
         if ($_POST['orgid']) {
             //Existing org.
             if (!($org = Organization::lookup($_POST['orgid']))) {
                 $info['error'] = 'Unknown organization selected';
             }
         } else {
             //Creating new org.
             $form = OrganizationForm::getDefaultForm()->getForm($_POST);
             if (!($org = Organization::fromForm($form))) {
                 $info['error'] = 'Unable to create organization - try again!';
             }
         }
         if ($org && $user->setOrganization($org)) {
             Http::response(201, $org->to_json());
         } elseif (!$info['error']) {
             $info['error'] = 'Unable to add organization - try again!';
         }
     } elseif ($orgId) {
         $org = Organization::lookup($orgId);
     } elseif ($org = $user->getOrganization()) {
         $info['title'] = sprintf('%s — %s', Format::htmlchars($user->getName()), 'Organization');
         $info['action'] = $info['onselect'] = '';
         $tmpl = 'org.tmpl.php';
     }
     if ($org && $user->getOrgId() && $org->getId() != $user->getOrgId()) {
         $info['warning'] = 'Are you sure you want to change customer\'s organization?';
     }
     $tmpl = $tmpl ?: 'org-lookup.tmpl.php';
     ob_start();
     include STAFFINC_DIR . "templates/{$tmpl}";
     $resp = ob_get_contents();
     ob_end_clean();
     return $resp;
 }
 function addOrg()
 {
     $info = array();
     if ($_POST) {
         $form = OrganizationForm::getDefaultForm()->getForm($_POST);
         if ($org = Organization::fromForm($form)) {
             Http::response(201, $org->to_json());
         }
         $info = array('error' => __('Error adding organization - try again!'));
     }
     $info['title'] = __('Add New Organization');
     $info['search'] = false;
     return self::_lookupform($form, $info);
 }