viest 4 лет назад
Родитель
Сommit
2b2e2932f6
4 измененных файлов с 30 добавлено и 13 удалено
  1. 1 1
      include/xlswriter.h
  2. 11 9
      kernel/excel.c
  3. 17 2
      kernel/write.c
  4. 1 1
      tests/insert_url_format.phpt

+ 1 - 1
include/xlswriter.h

@@ -209,7 +209,6 @@ void set_row(zend_string *range, double height, xls_resource_write_t *res, lxw_f
 void set_column(zend_string *range, double width, xls_resource_write_t *res, lxw_format *format);
 void merge_cells(zend_string *range, zval *value, xls_resource_write_t *res, lxw_format *format);
 void comment_writer(zend_string *comment, zend_long row, zend_long columns, xls_resource_write_t *res);
-void url_writer(zend_long row, zend_long columns, xls_resource_write_t *res, zend_string *url, lxw_format *format);
 void call_object_method(zval *object, const char *function_name, uint32_t param_count, zval *params, zval *ret_val);
 void chart_writer(zend_long row, zend_long columns, xls_resource_chart_t *chart_resource, xls_resource_write_t *res);
 void worksheet_set_rows(lxw_row_t start, lxw_row_t end, double height, xls_resource_write_t *res, lxw_format *format);
@@ -217,6 +216,7 @@ void image_writer(zval *value, zend_long row, zend_long columns, double width, d
 void formula_writer(zend_string *value, zend_long row, zend_long columns, xls_resource_write_t *res, lxw_format *format);
 void type_writer(zval *value, zend_long row, zend_long columns, xls_resource_write_t *res, zend_string *format, lxw_format *format_handle);
 void datetime_writer(lxw_datetime *datetime, zend_long row, zend_long columns, zend_string *format, xls_resource_write_t *res, lxw_format *format_handle);
+void url_writer(zend_long row, zend_long columns, xls_resource_write_t *res, zend_string *url, zend_string *text, zend_string *tool_tip, lxw_format *format);
 
 lxw_error workbook_file(xls_resource_write_t *self);
 

+ 11 - 9
kernel/excel.c

@@ -124,10 +124,12 @@ ZEND_BEGIN_ARG_INFO_EX(xls_insert_date_arginfo, 0, 0, 5)
                 ZEND_ARG_INFO(0, format_handle)
 ZEND_END_ARG_INFO()
 
-ZEND_BEGIN_ARG_INFO_EX(xls_insert_url_arginfo, 0, 0, 4)
+ZEND_BEGIN_ARG_INFO_EX(xls_insert_url_arginfo, 0, 0, 6)
                 ZEND_ARG_INFO(0, row)
                 ZEND_ARG_INFO(0, column)
                 ZEND_ARG_INFO(0, url)
+                ZEND_ARG_INFO(0, text)
+                ZEND_ARG_INFO(0, tool_tip)
                 ZEND_ARG_INFO(0, format)
 ZEND_END_ARG_INFO()
 
@@ -658,16 +660,18 @@ PHP_METHOD(vtiful_xls, insertChart)
 PHP_METHOD(vtiful_xls, insertUrl)
 {
     zend_long row = 0, column = 0;
-    zend_string *url = NULL;
     zval *format_handle = NULL;
+    zend_string *url = NULL, *text = NULL, *tool_tip = NULL;
 
     int argc = ZEND_NUM_ARGS();
 
-    ZEND_PARSE_PARAMETERS_START(3, 4)
+    ZEND_PARSE_PARAMETERS_START(3, 6)
             Z_PARAM_LONG(row)
             Z_PARAM_LONG(column)
             Z_PARAM_STR(url)
             Z_PARAM_OPTIONAL
+            Z_PARAM_STR(text)
+            Z_PARAM_STR(tool_tip)
             Z_PARAM_RESOURCE(format_handle)
     ZEND_PARSE_PARAMETERS_END();
 
@@ -677,12 +681,10 @@ PHP_METHOD(vtiful_xls, insertUrl)
 
     WORKBOOK_NOT_INITIALIZED(obj);
 
-    if (argc == 4) {
-        url_writer(row, column, &obj->write_ptr, url, zval_get_format(format_handle));
-    }
-
-    if (argc == 3) {
-        url_writer(row, column, &obj->write_ptr, url, obj->format_ptr.format);
+    if (format_handle != NULL) {
+        url_writer(row, column, &obj->write_ptr, url, text, tool_tip, zval_get_format(format_handle));
+    } else {
+        url_writer(row, column, &obj->write_ptr, url, text, tool_tip, obj->format_ptr.format);
     }
 }
 /* }}} */

+ 17 - 2
kernel/write.c

@@ -161,9 +161,24 @@ void format_copy(lxw_format *new_format, lxw_format *other_format)
     new_format->font_only = other_format->font_only;
 }
 
-void url_writer(zend_long row, zend_long columns, xls_resource_write_t *res, zend_string *url, lxw_format *format)
+void url_writer(zend_long row, zend_long columns, xls_resource_write_t *res, zend_string *url, zend_string *text, zend_string *tool_tip, lxw_format *format)
 {
-    worksheet_write_url(res->worksheet, (lxw_row_t)row, (lxw_col_t)columns, ZSTR_VAL(url), format);
+    if (text == NULL && tool_tip == NULL) {
+        worksheet_write_url_opt(res->worksheet, (lxw_row_t)row, (lxw_col_t)columns, ZSTR_VAL(url), format, NULL, NULL);
+        return;
+    }
+
+    if (text == NULL && tool_tip != NULL) {
+        worksheet_write_url_opt(res->worksheet, (lxw_row_t)row, (lxw_col_t)columns, ZSTR_VAL(url), format, NULL, ZSTR_VAL(tool_tip));
+        return;
+    }
+
+    if (text != NULL && tool_tip == NULL) {
+        worksheet_write_url_opt(res->worksheet, (lxw_row_t)row, (lxw_col_t)columns, ZSTR_VAL(url), format, ZSTR_VAL(text), NULL);
+        return;
+    }
+
+    worksheet_write_url_opt(res->worksheet, (lxw_row_t)row, (lxw_col_t)columns, ZSTR_VAL(url), format, ZSTR_VAL(text), ZSTR_VAL(tool_tip));
 }
 
 /*

+ 1 - 1
tests/insert_url_format.phpt

@@ -23,7 +23,7 @@ $filePath = $fileObject->header(['name', 'age'])
         ['viest', 21],
         ['wjx',   21]
     ])
-    ->insertUrl(3, 0, 'https://github.com', $alignStyle)
+    ->insertUrl(3, 0, 'https://github.com', NULL, NULL, $alignStyle)
     ->output();
 
 var_dump($filePath);